Open justb4 opened 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.
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.
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)
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)
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)
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.
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:
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'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...
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.
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!
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 origineleGetCapabilities
, komt een foutmelding. Terwijl de NS prefix wel expliciet binnen hetGetFeature
element wordt gedefinieërd.Voorbeeld hieronder. De
GetCapabilities
uit de KB. In deCapabilities
is de featurePrefix"kad:"
: voor de laagKDWFS_hockeyclubs
zoals hier, dusxmlns:kad="http://innovatie.kadaster.nl"
Echter de WFS-handlers in OpenLayers en GeoExt "onthouden" niet de
featurePrefixes
zoalskad:
, ook omdat deze mbt de de XML standaard niet van belang zijn. Het gaat om de (unieke) NS URIhttp://innovatie.kadaster.nl
. In deGetFeature
stuurt OpenLayers dan ook:KB geeft foutmelding omdat deze blijkbaar
kad:
als NS prefix verwacht. De Heron/OpenLayersGetFeature
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.