[Geoserver-users] KMATTR=TRUE generating invalid XML, or somethin'

jdeolive thinks my problem is that the server is bombing on the rendering of templates. and he’s right. I have a bazillion of the following errors in my geoserver log.

but how to fix it? do I have to write an .FTL file for every layer? could be an issue that since I upgraded from GeoServer 1.5.0 I am just pointing 1.5.1 at my old GEOSERVER_DATA_DIR?

thanks,
mike

Michael Frumin wrote:

jdeolive thinks my problem is that the server is bombing on the
rendering of templates. and he's right. I have a bazillion of the
following errors in my geoserver log.

but how to fix it? do I have to write an .FTL file for every layer?
could be an issue that since I upgraded from GeoServer 1.5.0 I am just
pointing 1.5.1 at my old GEOSERVER_DATA_DIR?

Hmmm, this is a good point. That could be the problem. Do you have only
templates in your data directory, under featureTypes directory for
subway_stations in this case?

-Justin

thanks,
mike

    WARNING: Failure tranforming feature to KML:subway_stations.31
    java.lang.RuntimeException: java.io.IOException: Error occured
    processing template.
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemark(KMLVectorTransformer.java:566)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:246)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:218)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:196)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encodeVectorLayer(KMLTransformer.java:162)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encode(KMLTransformer.java:100)
            at
    org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:625)
            at
    org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
            at
    org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:293)
            at
    org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:126)
            at
    org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:105)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLMapProducer.writeTo(KMLMapProducer.java:108)
            at
    org.vfny.geoserver.wms.responses.GetMapResponse.writeTo(GetMapResponse.java:472)
            at
    org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:582)
            at
    org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:315)
            at
    org.geoserver.request.Dispatcher.dispatch(Dispatcher.java:192)
            at
    org.geoserver.request.Dispatcher.handleRequestInternal(Dispatcher.java:52)
            at
    org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
            at
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
            at
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
            at
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
            at
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
            at
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
            at
    org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
            at
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
            at
    org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:103)
            at
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
            at
    org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
            at
    org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
            at
    org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
            at
    org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
            at
    org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
            at
    org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
            at org.mortbay.jetty.Server.handle(Server.java:269)
            at
    org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
            at
    org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
            at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
            at
    org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
            at
    org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
            at
    org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
            at
    org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
    Caused by: java.io.IOException: Error occured processing template.
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemarkDescription(KMLVectorTransformer.java:610)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemark(KMLVectorTransformer.java:562)
            ... 42 more
    Caused by: freemarker.core.InvalidReferenceException: Expression
    a.value is undefined on line 19, column 3 in
    kmlPlacemarkDescription.ftl.
            at
    freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
            at
    freemarker.core.Expression.getStringValue(Expression.java:118)
            at freemarker.core.Expression.getStringValue(Expression.java:93)
            at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.IfBlock.accept(IfBlock.java:82)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at
    freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:172)
            at freemarker.core.Environment.visit(Environment.java:351)
            at freemarker.core.IteratorBlock.accept(IteratorBlock.java:95)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.Environment.process(Environment.java:176)
            at freemarker.template.Template.process(Template.java:232)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemarkDescription(KMLVectorTransformer.java:607)
            ... 43 more
    763592596 [btpool0-119] ERROR freemarker.runtime -
    Expression a.value is undefined on line 19, column 3 in
    kmlPlacemarkDescription.ftl.
    The problematic instruction:
    ----------
    ==> ${a.value} [on line 19, column 1 in kmlPlacemarkDescription.ftl]
    ----------

    Java backtrace for programmers:
    ----------
    freemarker.core.InvalidReferenceException: Expression a.value is
    undefined on line 19, column 3 in kmlPlacemarkDescription.ftl.
            at
    freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
            at
    freemarker.core.Expression.getStringValue(Expression.java:118)
            at freemarker.core.Expression.getStringValue(Expression.java:93)
            at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.IfBlock.accept(IfBlock.java:82)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at
    freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:172)
            at freemarker.core.Environment.visit(Environment.java:351)
            at freemarker.core.IteratorBlock.accept(IteratorBlock.java:95)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.MixedContent.accept(MixedContent.java:92)
            at freemarker.core.Environment.visit(Environment.java:196)
            at freemarker.core.Environment.process(Environment.java:176)
            at freemarker.template.Template.process(Template.java:232)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemarkDescription(KMLVectorTransformer.java:607)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemark(KMLVectorTransformer.java:562)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:246)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:218)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:196)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encodeVectorLayer(KMLTransformer.java:162)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encode(KMLTransformer.java:100)
            at
    org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:625)
            at
    org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
            at
    org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:293)
            at
    org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:126)
            at
    org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:105)
            at
    org.vfny.geoserver.wms.responses.map.kml.KMLMapProducer.writeTo(KMLMapProducer.java:108)
            at
    org.vfny.geoserver.wms.responses.GetMapResponse.writeTo(GetMapResponse.java:472)
            at
    org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:582)
            at
    org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:315)
            at
    org.geoserver.request.Dispatcher.dispatch(Dispatcher.java:192)
            at
    org.geoserver.request.Dispatcher.handleRequestInternal(Dispatcher.java:52)
            at
    org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
            at
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
            at
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
            at
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
            at
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
            at
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
            at
    org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
            at
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
            at
    org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:103)
            at
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
            at
    org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
            at
    org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
            at
    org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
            at
    org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
            at
    org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
            at
    org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
            at org.mortbay.jetty.Server.handle(Server.java:269)
            at
    org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
            at
    org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
            at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
            at
    org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
            at
    org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
            at
    org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
            at
    org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

jdeolive@anonymised.com wrote:

Hmm, this is kind of messed up. Is the server throwing any exceptions? I
have a feeling an exception is occurring during the encoding of the
placemark description ( which uses the template ). Because nothing after
the name is being written out from what i can tell, and the placemark
tag is never closed which is pretty messed up. Can you verify this,
there should be something in the log about a feature not being encoded
properly.

But this brings up a good bug. When loading a template fails some
cleanup needs to be performed in order to ensure that a valid document
is produced.

http://jira.codehaus.org/browse/GEOS-1153

-Justin

Michael Frumin wrote:
  

http://transit.frumin.net/geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&SRS=EPSG:4326&STYLES=&TRANSPARENT=FALSE&UNIQUEID=&BBOX=-74.04730987548828,40.54514344465497,-73.70000457763672,40.9154049
    
5622394&WIDTH=400&HEIGHT=400&FORMAT=application/vnd.google-earth.kml+XML&KMATTR=TRUE&LAYERS=frumin:subway_stations
  
<http://transit.frumin.net/geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&SRS=EPSG:4326&STYLES=&TRANSPARENT=FALSE&UNIQUEID=&BBOX=-74.04730987548828,40.54514344465497,-73.70000457763672,40.915404
    
95622394&WIDTH=400&HEIGHT=400&FORMAT=application/vnd.google-earth.kml+XML&KMATTR=TRUE&LAYERS=frumin:subway_stations>
  

returns the ever-so-useful error when opened in google earth:
    Open of file "C:\........" failed: Parse error at line 1, column
      

    */249382/*
    

    mismatched tag
      

this happens on many of my layers when i do KMATTR=TRUE. it is
        

basically always griping at the end of the file.
    

thanks,
      

mike

------------------------------------------------------------------------
        

-------------------------------------------------------------------------
      

This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
    

!DSPAM:4007,4672e390141201030819293!
      

------------------------------------------------------------------------
        

_______________________________________________
      

Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users
    

!DSPAM:4007,4672e390141201030819293!
        
-- Justin Deoliveira
The Open Planning Project
jdeolive@anonymised.com
  

!DSPAM:4007,4679487282673327367457!

------------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

!DSPAM:4007,4679487282673327367457!

------------------------------------------------------------------------

_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

!DSPAM:4007,4679487282673327367457!

--
Justin Deoliveira
The Open Planning Project
http://topp.openplans.org