Hi,
Sorry, my own answer was nonsense. The GetCapabilities look good on the browser but the error
seems to mean that the XML parser stops to some error when it is resolving the GetLegendGraphics
URLs. I believe that the difference that you found is related. The error happens here
Caused by: java.lang.NullPointerException
at
org.geotools.data.wms.xml.WMSComplexTypes$_LegendURLType.getValue(WMSComplexTypes.java:4352)
I tried to validate the GetCapabilities XML with an online validator and it did not find errors.
Let’s hope that real developers will have a look.
-Jukka Rahkonen-
*Lähettäjä:*KSPA - Kristoffer Steen Pagels [mailto:[email protected]]
*Lähetetty:* 7. joulukuuta 2017 12:00
*Vastaanottaja:* Rahkonen Jukka (MML) <[email protected]>;
[email protected]
*Aihe:* SV: NPE when creating cascading WMS service
Hi,
The service requires a login and password, and normally these values are filled out. But I have
removed the username and password from the example for security reasons. JIt should however still
be possible to get the getcapabilities parsed correctly without username and password.
For example, this WMS service url is working without issues (and without username and password
provided)
https://services.kortforsyningen.dk/service?servicename=fot2007&client=undefined&request=GetCapabilities&service=WMS&version=1.1.1
The only difference I have found in the two WMS getcapability xml’s is the
xlink namespace:
In the failing WMS (servicename=topo_geo) the online resource is
<OnlineResourcexmlns:xlink="https://www.w3.org/1999/xlink"
xlink:href="https://services.kortforsyningen.dk/topo_geo?&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=Territorialomraade&format=image/png&STYLE=default"
xlink:type="simple"/>
While in the WMS that is working (servicename=fot2007) the online resource is
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
xlink:href="https://services.kortforsyningen.dk/fot2007?&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=HOEJ_BEBYGGELSE&format=image/png&STYLE=default"/>
The difference is https vs http for the xlink namespace. Could this be related to the error, and
if so, is it an error in geoserver parsing or in the WMS service itself?
/Kristoffer
*Fra:*Rahkonen Jukka (MML) [mailto:[email protected]]
*Sendt:* 7. december 2017 10:36
*Til:* KSPA - Kristoffer Steen Pagels <[email protected] <mailto:[email protected]>>;
[email protected] <mailto:[email protected]>
*Emne:* VS: NPE when creating cascading WMS service
Hi,
That server is as least reporting nonsense as OnlineResource:
<OnlineResource
xlink:href="https://services.kortforsyningen.dk/topo_geo?ignoreillegallayers=TRUE&transparent=TRUE&&"
xlink:type="simple"/>
-Jukka Rahkonen-
*Lähettäjä:*KSPA - Kristoffer Steen Pagels [mailto:[email protected]]
*Lähetetty:* 7. joulukuuta 2017 9:43
*Vastaanottaja:* [email protected]
<mailto:[email protected]>
*Aihe:* [Geoserver-users] NPE when creating cascading WMS service
Hi,
I’m running geoserver 1.12.1 on windows 7, but have experienced the same issue on geoserver 1.11.2
on Ubuntu as well.
I have searched the web for solutions to this issue and have not been able to find any solution,
so now I send this mail to the mailinglist.
I want to cascade a remote WMS service on my geoserver, So I add a new WMS-store (from other data
sources), and enter the following values
Workspace: kort (not important, just select an empty workspace)
WMS source name: kort
Capabilities URL:
https://services.kortforsyningen.dk/service?servicename=topo_geo&client=undefined&request=GetCapabilities&service=WMS&version=1.1.1
I leave the rest of the settings for default values, and click save.
Instead of getting an list of layers that can be published, I get an exception:
org.apache.wicket.WicketRuntimeException: Exception 'null' occurred during validation
org.geoserver.web.data.store.WMSStoreNewPage$WMSCapabilitiesURLValidator on component
13:form:capabilitiesURL:border:border_body:paramValue
at
org.apache.wicket.markup.html.form.FormComponent.validateValidators(FormComponent.java:1529)
at
org.apache.wicket.markup.html.form.FormComponent.validate(FormComponent.java:1139)
at
org.apache.wicket.markup.html.form.Form$18.validate(Form.java:1950)
at
org.apache.wicket.markup.html.form.Form$ValidationVisitor.component(Form.java:177)
at
org.apache.wicket.markup.html.form.Form$ValidationVisitor.component(Form.java:161)
at
org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:274)
at
org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:262)
at
org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:262)
at
org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:262)
at
org.apache.wicket.util.visit.Visits.visitPostOrderHelper(Visits.java:262)
at
org.apache.wicket.util.visit.Visits.visitPostOrder(Visits.java:245)
at
org.apache.wicket.markup.html.form.FormComponent.visitFormComponentsPostOrder(FormComponent.java:382)
at
org.apache.wicket.markup.html.form.Form.visitFormComponentsPostOrder(Form.java:1155)
at
org.apache.wicket.markup.html.form.Form.validateComponents(Form.java:1942)
at
org.apache.wicket.markup.html.form.Form.validate(Form.java:1884)
at org.apache.wicket.markup.html.form.Form.process(Form.java:945)
at
org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
at
org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
at
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
at
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
at
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
at
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
at
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
at
org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at
org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:157)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)
at
org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)
at
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at
org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:157)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at
org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at
org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:152)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:88)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:89)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at
org.geotools.data.wms.xml.WMSComplexTypes$_LegendURLType.getValue(WMSComplexTypes.java:4352)
at
org.geotools.xml.handlers.ComplexElementHandler.endElement(ComplexElementHandler.java:188)
at
org.geotools.xml.XMLSAXHandler.endElement(XMLSAXHandler.java:276)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at
org.geotools.xml.DocumentFactory.getInstance(DocumentFactory.java:156)
at
org.geotools.data.wms.response.WMSGetCapabilitiesResponse.<init>(WMSGetCapabilitiesResponse.java:63)
at
org.geotools.data.wms.WMS1_0_0$GetCapsRequest.createResponse(WMS1_0_0.java:235)
at
org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:445)
at
org.geotools.data.wms.WebMapServer.issueRequest(WebMapServer.java:435)
at
org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:272)
at
org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:120)
at
org.geotools.data.wms.WebMapServer.<init>(WebMapServer.java:398)
at
org.geoserver.web.data.store.WMSStoreNewPage$WMSCapabilitiesURLValidator.validate(WMSStoreNewPage.java:132)
at
org.apache.wicket.markup.html.form.FormComponent.validateValidators(FormComponent.java:1525)
... 127 more
I have tried to use the WMS service directly from openlayers, and it works perfectly, it is just
when fetching capabilities from GeoServer that it fails.
/Kristoffer
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Please make sure you read the following two resources before posting to this
list:
- Earning your support instead of buying it, but Ian Turton:
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines:
http://geoserver.org/comm/userlist-guidelines.html
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users