B3Partners / kaartenbalie

B3P GIS Suite toegangsbeveiliging en monitoring
GNU Lesser General Public License v3.0
0 stars 1 forks source link

WFS GetFeature: XML Namespace prefix niet herkend #5

Open justb4 opened 7 years ago

justb4 commented 7 years ago

Probleem gevonden in KB 4.2.7 met Heron Viewer maar de afhandeling binnen viewer is door standaard GeoExt (1.1) en OpenLayers (2.12) WFS-handling.

Probleem Wanneer naar een in KB geconfigureerde WFS een GetFeature wordt gestuurd met daarin een andere NameSpace (NS) Prefix dan die uit de originele GetCapabilities, komt een foutmelding. Terwijl de NS prefix wel expliciet binnen het GetFeature element wordt gedefinieërd.

Voorbeeld hieronder. De GetCapabilities uit de KB. In de Capabilities is de featurePrefix "kad:": voor de laag KDWFS_hockeyclubs zoals hier, dus xmlns:kad="http://innovatie.kadaster.nl"

<WFS_Capabilities xmlns="http://www.opengis.net/wfs" 
xmlns:nlextract="http://data.nlextract.nl"  
xmlns:bag="http://www.openbag.nl"  
xmlns:osgeonl="http://osgeo.nl" 
xmlns:heron="http://heron-mc.org"  
xmlns:kad="http://innovatie.kadaster.nl"
xmlns:ogc="http://www.opengis.net/ogc" 
xmlns:wfs="http://www.opengis.net/wfs" 
xmlns:ows="http://www.opengis.net/ows"  
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gml="http://www.opengis.net/gml" 
xmlns:dummy="http://dummy.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.opengis.net/wfs  
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"  version="1.1.0" updateSequence="1285">

.
.
<FeatureTypeList>
<FeatureType>
<Name>kad:KDWFS_hockeyclubs</Name>
<Title>hockeyclubs</Title>
<Abstract>Alle hockeyclubs, locaties, in Nederland.</Abstract>
<ows:Keywords><ows:Keyword>features</ows:Keyword>
<ows:Keyword>hockeyclubs</ows:Keyword></ows:Keywords>
<DefaultSRS>urn:x-ogc:def:crs:EPSG:28992</DefaultSRS><ows:WGS84BoundingBox 
crs="urn:ogc:def:crs:OGC:2:84">
<ows:LowerCorner>3.4396630101359507 50.80790500500096</ows:LowerCorner>
<ows:UpperCorner>7.1191888183781655 53.36842213221817</ows:UpperCorner></ows:WGS84BoundingBox>
</FeatureType>
.
.
.

Echter de WFS-handlers in OpenLayers en GeoExt "onthouden" niet de featurePrefixes zoals kad:, ook omdat deze mbt de de XML standaard niet van belang zijn. Het gaat om de (unieke) NS URI http://innovatie.kadaster.nl. In de GetFeature stuurt OpenLayers dan ook:

<wfs:GetFeature 
xmlns:wfs="http://www.opengis.net/wfs"  service="WFS" 
version="1.1.0" outputFormat="GML2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://www.opengis.net/wfs  http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
<wfs:Query  typeName="feature:KDWFS_hockeyclubs" srsName="EPSG:28992" 
xmlns:feature="http://innovatie.kadaster.nl">
<ogc:Filter  xmlns:ogc="http://www.opengis.net/ogc">
<ogc:BBOX>
<gml:Envelope xmlns:gml="http://www.opengis.net/gml"  srsName="EPSG:28992">
<gml:lowerCorner>-641508.16 230756.8</gml:lowerCorner>
<gml:upperCorner>951508.16 695243.2</gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

KB geeft foutmelding omdat deze blijkbaar kad: als NS prefix verwacht. De Heron/OpenLayers GetFeature request gebruikt "feature:" binnen <wfs:Query> als featurePrefix maar wel gebonden aan de goede featureNS "http://innovatie.kadaster.nl".

Als ik rechtstreeks vanuit Heron naar de onderliggende WFS server http://kademo.nl/gs2/wfs? ga, gaat het wel goed. Dus GeoServer/MapServer handelt deze standaard NS constructie, m.i. terecht, wel goed af.

Oplossing

KB WFS handler moet niet uitgaan van originele NS prefixnamen maar de definitie via de URI volgen/gebruiken.

cvanlith commented 7 years ago

Hier wreekt zich het feit dat Kaartenbalie al behoorlijk bejaard is. Oorspronkelijk sloeg kaartenbalie de kaartlaag op onder een naam als "{namespace-url}kaartlaagnaamzonderprefix", hetgeen volledig correct is. De oorspronkelijk namespaceprefix werd dus niet opgeslagen. Echter toen (en ook nog vaak nu) wordt een prefix gebruikt zonder dat er een namespace declaratie in de aanroep zat. Dit is niet correct, maar komt/kwam te vaak voor. Kaartenbalie is uiteindelijk omgezet naar de meest gebruikte systematiek door de prefix op te slaan bij de kaartlaag. Dit werkte tot op heden vrijwel altijd, maar nu clients zich aan de standaarden houden (het moet niet gekker worden) komen we in de problemen. De oplossing is niet eenvoudig. Als we rücksichtlos de correcte methoden gaan gebruiken, dan gaan veel (mapserver [ms:], deegree[app:]) services het niet meer doen. Een tussenweg is ook lastig omdat je niet weet of je te maken hebt met een client die vertrouwt op de prefix en of een client die vertrouwt op de namespace zelf. We staan open voor suggesties.

justb4 commented 7 years ago

Als je beiden (prefix en NS URL) bij laag opslaat kun je toch aan de client aanroep detecteren wat nodig is? Of gaat het ook om niet-standaard backend WFS aanroepen? Die volgen toch de standaarden?

M.i. zijn er de volgende mogelijkheden van client WFS reqs:

In de laatste 3 gevallen kan het "pair" (NS prefix, NS URL) achterhaald worden. Naar de backend WFS stuur je voor zekerheid altijd NS URL met originele prefix. Alleen moet de response dan ook vertaald worden bedenk ik....

Is een context.xml optie een mogelijkheid: STRICT_WFS_NS=True|False? Default is False zoals nu. RVB zal dan True zetten. Een dergelijke optie zit ook in GeoServer mbt bijv WMS. Sowieso beiden opslaan, alleen je zit met bestaande DBs.

justb4 commented 7 years ago

Ik krijg zelfde error missing parameter: TYPENAME., gebruikmakend van 4.2.8-rvb .war file: http://repo.b3p.nl/nexus/service/local/repositories/releases/content/nl/b3p/kaartenbalie/4.2.8-rvb/kaartenbalie-4.2.8-rvb.war (ok lokaal heet de war -427-rvb.war), maar de classes zijn recent:

vagrant@vagrant-ubuntu-trusty-64:/var/lib/tomcat7/webapps/kaartenbalie427-rvb$ ls -l WEB-INF/classes/nl/b3p/kaartenbalie/service/requesthandler/
total 208
-rw-r--r-- 1 gis gis  7030 Nov 29 18:23 DataWrapper.class
-rw-r--r-- 1 gis gis  6183 Nov 29 18:23 DescribeLayerRequestHandler.class
-rw-r--r-- 1 gis gis  1672 Nov 29 18:23 DOMValidator.class
-rw-r--r-- 1 gis gis  9068 Nov 29 18:23 GetCapabilitiesRequestHandler.class
-rw-r--r-- 1 gis gis  6638 Nov 29 18:23 GetFeatureInfoRequestHandler.class
-rw-r--r-- 1 gis gis  5031 Nov 29 18:23 GetLegendGraphicRequestHandler.class
-rw-r--r-- 1 gis gis  9584 Nov 29 18:23 GetMapRequestHandler.class
-rw-r--r-- 1 gis gis   778 Nov 29 18:23 GetStylesRequestHandler.class
-rw-r--r-- 1 gis gis  2869 Nov 29 18:23 MetadataRequestHandler.class
-rw-r--r-- 1 gis gis 14538 Nov 29 18:23 OGCRequestHandler.class
-rw-r--r-- 1 gis gis  5257 Nov 29 18:23 ProxyRequestHandler.class
-rw-r--r-- 1 gis gis   379 Nov 29 18:23 RequestHandler.class
-rw-r--r-- 1 gis gis  4119 Nov 29 18:23 TextToImage.class
-rw-r--r-- 1 gis gis  4277 Nov 29 18:23 WFSDescribeFeatureTypeRequestHandler.class
-rw-r--r-- 1 gis gis  1800 Nov 29 18:23 WFSGetCapabilitiesRequestHandler.class
-rw-r--r-- 1 gis gis  6407 Nov 29 18:23 WFSGetFeatureRequestHandler.class
-rw-r--r-- 1 gis gis 23019 Nov 29 18:23 WFSRequestHandler.class
-rw-r--r-- 1 gis gis  6359 Nov 29 18:23 WFSTransactionRequestHandler.class
-rw-r--r-- 1 gis gis   288 Nov 29 18:23 WMSRequestHandler$1.class
-rw-r--r-- 1 gis gis 37038 Nov 29 18:23 WMSRequestHandler.class
-rw-r--r-- 1 gis gis  1196 Nov 29 18:23 WMSRequestHandler$DescribeLayerData.class
-rw-r--r-- 1 gis gis  1781 Nov 29 18:23 WMSRequestHandler$ServiceExceptionHandler.class

Output:


2016-11-30 10:23:55,091 [http-bio-8080-exec-6] DEBUG nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Incoming POST URL (content follows): http://local.lib.heron-mc.org:8080/kaartenbalie427-rvb/services/858b044ce6b93bd95b4450682b5ceb95
2016-11-30 10:23:55,199 [http-bio-8080-exec-6] DEBUG nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Incoming POST content: 
<wfs:GetFeature outputFormat="GML2" service="WFS" version="1.1.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
<wfs:Query srsName="EPSG:28992" typeName="feature:KDWFS_hockeyclubs" xmlns:feature="http://innovatie.kadaster.nl">
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:BBOX>
<gml:Envelope srsName="EPSG:28992" xmlns:gml="http://www.opengis.net/gml">
<gml:lowerCorner>-20042.56 337201.6</gml:lowerCorner>
<gml:upperCorner>330042.56 588798.4</gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

2016-11-30 10:23:55,218 [http-bio-8080-exec-6] DEBUG nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Persoonlijke code gevonden bij gebruiker: KADEMOWFSUSER
2016-11-30 10:23:55,219 [http-bio-8080-exec-6] DEBUG nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Controleren ip: 10.0.2.2 tegen: 10.0.2.2
2016-11-30 10:23:55,220 [http-bio-8080-exec-6] DEBUG nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Gebruiker KADEMOWFSUSER succesvol ingelogd
2016-11-30 10:23:55,223 [http-bio-8080-exec-6] ERROR nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Error while handling request for URI /kaartenbalie427-rvb/services/858b044ce6b93bd95b4450682b5ceb95, query string : java.lang.UnsupportedOperationException: Not all parameters for request 'GetFeature' are available, missing parameter: TYPENAME.
java.lang.UnsupportedOperationException: Not all parameters for request 'GetFeature' are available, missing parameter: TYPENAME.
    at nl.b3p.ogc.utils.OGCRequest.checkRequestURL(OGCRequest.java:1130)
    at nl.b3p.ogc.utils.OGCRequest.checkRequestURL(OGCRequest.java:1105)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:133)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doPost(GeneralServlet.java:545)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
2016-11-30 10:26:02,539 [http-bio-8080-exec-6] ERROR nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - error: 
java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
    at sun.net.www.http.HttpClient.New(HttpClient.java:308)
    at sun.net.www.http.HttpClient.New(HttpClient.java:326)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:997)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:933)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:851)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1301)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
    at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)
    at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
    at nl.b3p.kaartenbalie.service.requesthandler.DOMValidator.parseAndValidate(DOMValidator.java:45)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.handleRequestExceptionAsXML(CallWMSServlet.java:284)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.handleRequestException(CallWMSServlet.java:190)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:163)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doPost(GeneralServlet.java:545)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
2016-11-30 10:26:02,541 [http-bio-8080-exec-6] ERROR nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Error creating EntityManager
java.io.IOException: Exception occured during validation of error message: java.net.ConnectException: Connection timed out
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.handleRequestExceptionAsXML(CallWMSServlet.java:287)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.handleRequestException(CallWMSServlet.java:190)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:163)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doPost(GeneralServlet.java:545)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
justb4 commented 7 years ago

Ook 1.0.0 wordt niet herkedn, al in Capabiltities request. Kan aan backend liggen:

2016-11-30 10:47:00,522 [http-bio-8080-exec-3] ERROR nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Error while handling request for URI /kaartenbalie427-rvb/services/858b044ce6b93bd95b4450682b5ceb95, query string SERVICE=WFS&REQUEST=GetCapabilities&VERSION=1.0.0: java.lang.UnsupportedOperationException: No Serviceprovider available! User might not have rights to any Serviceprovider!
java.lang.UnsupportedOperationException: No Serviceprovider available! User might not have rights to any Serviceprovider!
    at nl.b3p.kaartenbalie.service.requesthandler.WFSRequestHandler.writeResponse(WFSRequestHandler.java:203)
    at nl.b3p.kaartenbalie.service.requesthandler.WFSGetCapabilitiesRequestHandler.getRequest(WFSGetCapabilitiesRequestHandler.java:60)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.parseRequestAndData(CallWMSServlet.java:381)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:146)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doGet(GeneralServlet.java:533)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
justb4 commented 7 years ago

Ook 1.0.0 wordt niet herkedn, al in Capabiltities request. Kan aan backend liggen:

2016-11-30 10:47:00,522 [http-bio-8080-exec-3] ERROR nl.b3p.kaartenbalie.service.servlet.CallWMSServlet - Error while handling request for URI /kaartenbalie427-rvb/services/858b044ce6b93bd95b4450682b5ceb95, query string SERVICE=WFS&REQUEST=GetCapabilities&VERSION=1.0.0: java.lang.UnsupportedOperationException: No Serviceprovider available! User might not have rights to any Serviceprovider!
java.lang.UnsupportedOperationException: No Serviceprovider available! User might not have rights to any Serviceprovider!
    at nl.b3p.kaartenbalie.service.requesthandler.WFSRequestHandler.writeResponse(WFSRequestHandler.java:203)
    at nl.b3p.kaartenbalie.service.requesthandler.WFSGetCapabilitiesRequestHandler.getRequest(WFSGetCapabilitiesRequestHandler.java:60)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.parseRequestAndData(CallWMSServlet.java:381)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:146)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doGet(GeneralServlet.java:533)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
justb4 commented 7 years ago

Volgens mij zit probleem heel ergens anders. M.n.:

    at nl.b3p.ogc.utils.OGCRequest.checkRequestURL(OGCRequest.java:1130)
    at nl.b3p.ogc.utils.OGCRequest.checkRequestURL(OGCRequest.java:1105)
    at nl.b3p.kaartenbalie.service.servlet.CallWMSServlet.processRequest(CallWMSServlet.java:133)
    at nl.b3p.kaartenbalie.service.servlet.GeneralServlet.doPost(GeneralServlet.java:545)

Als ik bijv via een WFS GET de features ophaal, gaat prima:

http://local.lib.heron-mc.org:8080/kaartenbalie427-rvb/services/858b044ce6b93bd95b4450682b5ceb95?service=WFS&request=GetFeature&typeName=anynamespace:KDWFS_hockeyclubs&version=1.1.0

los van de namespace die ik gebruik: kad: of iets anders.

Het lijkt er meer op dat vanaf https://github.com/B3Partners/b3p-commons-gis/blob/master/src/main/java/nl/b3p/ogc/utils/OGCRequest.java#L1121 de hele TypeName ontbreekt. Die zou m.i. gezet moeten worden in setGetFeatureV110(): https://github.com/B3Partners/b3p-commons-gis/blob/master/src/main/java/nl/b3p/ogc/utils/OGCRequest.java#L271 . Deze is verplicht (TYPENAME) via https://github.com/B3Partners/b3p-commons-gis/blob/master/src/main/java/nl/b3p/ogc/utils/OGCConstants.java#L166

Maar goed ik kan iets missen daar. Dan zou het voor 1.0.0 POSTs ook niet werken.

justb4 commented 7 years ago

Release 4.2.9 lost idd WFS NS probleem op maar introduceert nieuw probleem: WMS GetLegendGraphic werkt niet meer via Kaartenbalie, geeft altijd exceptie, zie voorbeeld:

http://geoweb.frd.oshsdir.local/kaartenbalie/services/2ae9da6588f0af2a04811b26b5b039f1?TRANSPARENT=TRUE&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application/vnd.ogc.se_xml&LAYER=rvob:rvob_rvob_compleet&FORMAT=image/gif

geeft

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ServiceExceptionReport SYSTEM
"http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd">
 <ServiceExceptionReport version="1.1.1" >  
<ServiceException>

      Can&apos;t obtain the schema for the required layer.

rvob:rvob_rvob_compleet layer does not exist.
</ServiceException>
</ServiceExceptionReport>

WMS GetMap werkt wel iha bijv voor dezelfde NameSpaced Layer LAYER=rvob:rvob_rvob_compleet.

Een directe aanroep van de achterliggende GeoServer WMS voor GetLegendGraphic voor deze laag: LAYER=rvob:rvob_compleet werkt ook (geeft legenda plaatje).

Ik denk dat er iets in de common code voor WFS en GetLegendGraphic misgaat...

cvanlith commented 7 years ago

Een oud probleem heb ik opgelost, waarbij bij GetLegendGraphic de verkeerde kaartlaagnaam werd gebruikt richting backend. Dit is gefikst in release 4.2.10. Mogelijk is dit niet eerder vastgesteld omdat de url in de GetCapabilities wel werkt.

justb4 commented 7 years ago

Ok, 4.2.10 op O bij RVB uitgerold: WMS GetLegendGraphic werkt weer en WFS (GetCapabilities GetFeature) lijkt ook te werken. RVB doet nog acceptatie-test, maar ziet er goed uit! Thanks!