[Geoserver-devel] More KML problems in 1.7.0 RC2

I've got Geoserver set running in Tomcat and am sending it requests through Google Earth.

I have 3 layers that I'm querying. 1 default shapefile (states), and 2 sde layers. I am using Gabriel's ArcSDE jar (his Geotools fixes/changes don't seem to have made it to the latest RC2).

The shapefile acts funny on GE, but this may be a GE issue (although it was fine with 1.6.4). I'm going to test this a bit more, maybe using some else's GE.

The SDE layers seem to work 2/3 of the time. I have a stack trace of the exception but have no idea where the problem lies...It's a simple use case, both layers turned on in GE (nothing else turned on), and I pan somewhere to force 2 requests to be sent. The layer with less data seems to mostly work, the other time has a 50% success rate.

Here's the exception:

2008-09-03 09:28:02,812 ERROR [geoserver.ows] -
java.io.IOException
  at org.vfny.geoserver.wms.responses.map.kml.KMZMapProducer.writeTo(KMZMapProducer.java:153)
  at org.vfny.geoserver.wms.responses.GetMapResponse.writeTo(GetMapResponse.java:560)
  at org.geoserver.ows.adapters.ResponseAdapter.write(ResponseAdapter.java:60)
  at org.geoserver.ows.Dispatcher.response(Dispatcher.java:648)
  at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:198)
  at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
  at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
  at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
  at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:163)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:47)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: javax.xml.transform.TransformerException: Translator error
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:133)
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:108)
  at org.vfny.geoserver.wms.responses.map.kml.KMZMapProducer.writeTo(KMZMapProducer.java:150)
  ... 52 more
Caused by: java.lang.IllegalStateException: Cannot create a session after the response has been committed
  at org.apache.catalina.connector.Request.doGetSession(Request.java:2301)
  at org.apache.catalina.connector.Request.getSession(Request.java:2075)
  at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
  at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:844)
  at org.vfny.geoserver.util.Requests.getBaseUrl(Requests.java:92)
  at org.geoserver.wms.util.WMSRequests.getBaseUrl(WMSRequests.java:48)
  at org.geoserver.wms.util.WMSRequests.getBaseUrl(WMSRequests.java:63)
  at org.geoserver.wms.util.WMSRequests.getGetLegendGraphicUrl(WMSRequests.java:203)
  at org.vfny.geoserver.wms.responses.map.kml.KMLUtils.getLegendGraphicUrl(KMLUtils.java:146)
  at org.vfny.geoserver.wms.responses.map.kml.KMLLegendTransformer$KMLLegendTranslator.encode(KMLLegendTransformer.java:63)
  at org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encodeLegend(KMLTransformer.java:260)
  at org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encode(KMLTransformer.java:155)
  at org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:714)
  at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
  at org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:296)
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:129)
  ... 54 more

--
Refractions Research
Suite 300 - 1207 Douglas St
Victoria, BC, V8W 2E7, Canada
ph: (250) 383-3022
fax:(250) 383-2140

Checked the shapefile issue. It looks like an actual problem.

Created a JIRA issue for it http://jira.codehaus.org/browse/GEOS-2194

Amr A. Alam wrote:

I've got Geoserver set running in Tomcat and am sending it requests through Google Earth.

I have 3 layers that I'm querying. 1 default shapefile (states), and 2 sde layers. I am using Gabriel's ArcSDE jar (his Geotools fixes/changes don't seem to have made it to the latest RC2).

The shapefile acts funny on GE, but this may be a GE issue (although it was fine with 1.6.4). I'm going to test this a bit more, maybe using some else's GE.

The SDE layers seem to work 2/3 of the time. I have a stack trace of the exception but have no idea where the problem lies...It's a simple use case, both layers turned on in GE (nothing else turned on), and I pan somewhere to force 2 requests to be sent. The layer with less data seems to mostly work, the other time has a 50% success rate.

Here's the exception:

2008-09-03 09:28:02,812 ERROR [geoserver.ows] -
java.io.IOException
  at org.vfny.geoserver.wms.responses.map.kml.KMZMapProducer.writeTo(KMZMapProducer.java:153)
  at org.vfny.geoserver.wms.responses.GetMapResponse.writeTo(GetMapResponse.java:560)
  at org.geoserver.ows.adapters.ResponseAdapter.write(ResponseAdapter.java:60)
  at org.geoserver.ows.Dispatcher.response(Dispatcher.java:648)
  at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:198)
  at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
  at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
  at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
  at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
  at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
  at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:163)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:47)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Unknown Source)
Caused by: javax.xml.transform.TransformerException: Translator error
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:133)
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:108)
  at org.vfny.geoserver.wms.responses.map.kml.KMZMapProducer.writeTo(KMZMapProducer.java:150)
  ... 52 more
Caused by: java.lang.IllegalStateException: Cannot create a session after the response has been committed
  at org.apache.catalina.connector.Request.doGetSession(Request.java:2301)
  at org.apache.catalina.connector.Request.getSession(Request.java:2075)
  at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
  at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:844)
  at org.vfny.geoserver.util.Requests.getBaseUrl(Requests.java:92)
  at org.geoserver.wms.util.WMSRequests.getBaseUrl(WMSRequests.java:48)
  at org.geoserver.wms.util.WMSRequests.getBaseUrl(WMSRequests.java:63)
  at org.geoserver.wms.util.WMSRequests.getGetLegendGraphicUrl(WMSRequests.java:203)
  at org.vfny.geoserver.wms.responses.map.kml.KMLUtils.getLegendGraphicUrl(KMLUtils.java:146)
  at org.vfny.geoserver.wms.responses.map.kml.KMLLegendTransformer$KMLLegendTranslator.encode(KMLLegendTransformer.java:63)
  at org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encodeLegend(KMLTransformer.java:260)
  at org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encode(KMLTransformer.java:155)
  at org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:714)
  at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
  at org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:296)
  at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:129)
  ... 54 more

--
Refractions Research
Suite 300 - 1207 Douglas St
Victoria, BC, V8W 2E7, Canada
ph: (250) 383-3022
fax:(250) 383-2140