Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BP] Pas de fond de plan (GeoTools force WFS 1.0.0) #646

Closed
catmorales opened this issue Mar 25, 2022 · 14 comments
Closed

[BP] Pas de fond de plan (GeoTools force WFS 1.0.0) #646

catmorales opened this issue Mar 25, 2022 · 14 comments
Labels
Milestone

Comments

@catmorales
Copy link

catmorales commented Mar 25, 2022

Environnement

Site : https://portail-test.sig.rennesmetropole.fr
Version Cadastrapp : v2.0
Version mapstore2-cadastrapp: georchestra/mapstore2-cadastrapp@d0ea5e9
Navigateurs testés : Mozilla firefox 91.7.1esr (32 bits), Chrome Version 99.0.4844.82 (Build officiel) (64 bits)
Particularité : Equipement réseau Filtrant F5 , qui analyse les requêtes passantes et utilise un domaine spécifique (test-dmz-sigeosp.sig.rennesmetropole.fr)

Problème

La création du getImageBordereau parcellaire n'aboutit pas, le pdf créé contient une carte vide .

image

Le cookie semble rejeté en raison de noms de domaines différents.
Le message d'erreur complet dans les logs de cadastrapp est:


2022-03-25 09:17:38,847 [qtp1146848448-21] INFO  //cadastrapp/services/getImageBordereau - nouser - norole -o.g.c.p.CadastrappInterceptor - Incoming request
2022-03-25 09:17:38,847 [qtp1146848448-21] DEBUG //cadastrapp/services/getImageBordereau - nouser - norole -o.g.c.p.CadastrappInterceptor - Parameter list : { strokecolor:[0112ff]--fillcolor:[00ff18]--parcelle:[350210000AR0016]--basemapindex:[0]--fillopacity:[0.6]--strokewidth:[2]-- }
2022-03-25 09:17:38,847 [qtp1146848448-21] DEBUG //cadastrapp/services/getImageBordereau - nouser - norole -o.g.c.s.ImageParcelleController - Call WFS with plot Id 350210000AR0016 and WFS URL : https://portail-test.sig.rennesmetropole.fr/geoserver/app/wfs?REQUEST=GetCapabilities&version=1.0.0
2022-03-25 09:17:38,908 [qtp1146848448-21] WARN  //cadastrapp/services/getImageBordereau - nouser - norole -o.a.h.c.p.ResponseProcessCookies - Cookie rejected [TS015024b8="01bdc5bb5270b96370cc8261bf1da0c50a3cdabdd911069f94bd791926998d2653125080c06c6cfa51e8d81bea12cd0ee5e2...", version:0, domain:test-dmz-sigeosp.sig.rennesmetropole.fr, path:/, expiry:null] Illegal 'domain' attribute "test-dmz-sigeosp.sig.rennesmetropole.fr". Domain of origin: "portail-test.sig.rennesmetropole.fr"
[Fatal Error] :81:30: L'entité "copy" était référencée, mais pas déclarée.
mars 25, 2022 9:17:38 AM org.geotools.data.ows.AbstractOpenWebService internalIssueRequest
GRAVE: Failed to execute request https://portail-test.sig.rennesmetropole.fr/geoserver/app/wfs?version=1.0.0&REQUEST=GetCapabilities&SERVICE=WFS
mars 25, 2022 9:17:38 AM org.geotools.data.DataAccessFinder getDataStore
AVERTISSEMENT: Web Feature Server (NG) should be used, but could not connect
java.io.IOException: Error parsing capabilities document: L'entité "copy" était référencée, mais pas déclarée.
        at org.geotools.data.wfs.internal.GetCapabilitiesResponse.<init>(GetCapabilitiesResponse.java:83)
        at org.geotools.data.wfs.internal.GetCapabilitiesRequest.createResponse(GetCapabilitiesRequest.java:57)
        at org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:461)
        at org.geotools.data.wfs.internal.WFSClient.internalIssueRequest(WFSClient.java:328)
        at org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:338)
        at org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:57)
        at org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:287)
        at org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:124)
        at org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:97)
        at org.geotools.data.wfs.internal.WFSClient.<init>(WFSClient.java:75)
        at org.geotools.data.wfs.internal.WFSClient.<init>(WFSClient.java:65)
        at org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:108)
        at org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:63)
        at org.geotools.data.DataAccessFinder.getDataStore(DataAccessFinder.java:117)
        at org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:69)
        at org.georchestra.cadastrapp.service.ImageParcelleController.createImageBordereauParcellaire(ImageParcelleController.java:147)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:230)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:179)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.Server.handle(Server.java:516)
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
        at java.lang.Thread.run(Thread.java:750)
Caused by: org.xml.sax.SAXParseException; lineNumber: 81; columnNumber: 30; L'entité "copy" était référencée, mais pas déclarée.
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:256)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:338)
        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
        at org.geotools.data.wfs.internal.GetCapabilitiesResponse.<init>(GetCapabilitiesResponse.java:81)
        ... 72 more
2022-03-25 09:17:38,930 [qtp1146848448-21] ERROR //cadastrapp/services/getImageBordereau - nouser - norole -o.g.c.s.ImageParcelleController - Error while trying to init connection, please check configuration
java.io.IOException: Error parsing capabilities document: L'entité "copy" était référencée, mais pas déclarée.
        at org.geotools.data.wfs.internal.GetCapabilitiesResponse.<init>(GetCapabilitiesResponse.java:83)
        at org.geotools.data.wfs.internal.GetCapabilitiesRequest.createResponse(GetCapabilitiesRequest.java:57)
        at org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:461)
        at org.geotools.data.wfs.internal.WFSClient.internalIssueRequest(WFSClient.java:328)
        at org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:338)
        at org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:57)
        at org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:287)
        at org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:124)
        at org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:97)
        at org.geotools.data.wfs.internal.WFSClient.<init>(WFSClient.java:75)
        at org.geotools.data.wfs.internal.WFSClient.<init>(WFSClient.java:65)
        at org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:108)
        at org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:63)
        at org.geotools.data.DataAccessFinder.getDataStore(DataAccessFinder.java:117)
        at org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:69)
        at org.georchestra.cadastrapp.service.ImageParcelleController.createImageBordereauParcellaire(ImageParcelleController.java:147)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:230)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:179)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
        at org.eclipse.jetty.server.Server.handle(Server.java:516)
        at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
        at java.lang.Thread.run(Thread.java:750)
Caused by: org.xml.sax.SAXParseException: L'entité "copy" était référencée, mais pas déclarée.
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:256)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:338)
        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
        at org.geotools.data.wfs.internal.GetCapabilitiesResponse.<init>(GetCapabilitiesResponse.java:81)
        ... 72 common frames omitted

```
`
@catmorales
Copy link
Author

catmorales commented Mar 30, 2022

@pierrejego , @MaelREBOUX some news about this problem ?
I will have to backport our portail-test on v1.9, so to test this problem it will be difficult.

@catmorales
Copy link
Author

@pmauduit , ça te dit quelque chose ce cookie rejeté dans notre infra ?

@pmauduit
Copy link
Member

pmauduit commented Apr 5, 2022

On l'a déjà eu ce problème, non ? ou quelquechose de ressemblant à ca. Le message d'erreur dans la stacktrace:

Caused by: org.xml.sax.SAXParseException: L'entité "copy" était référencée, mais pas déclarée.

me fait penser au parser XML SAX qui tente de parser un document censé etre du XML mais qui n'en est pas un (une page d'erreur quelconque en HTML ou bien carrément une redirection sur CAS).

Et juste au dessus dans la stacktrace, on voit une url non normalisée:

2022-03-25 09:17:38,930 [qtp1146848448-21] ERROR //cadastrapp/services/getImageBordereau - nouser - norole -o.g.c.s.ImageParcelleController - Error while trying to init connection, please check configuration
java.io.IOException: Error parsing capabilities document: L'entité "copy" était référencée, mais pas déclarée.

N'y a t'il pas un double slash qui traine dans une configuration quelquepart ?

@pmauduit
Copy link
Member

pmauduit commented Apr 5, 2022

Note: je pensais à #486 mais ce n'est probablement pas ca.

@catmorales
Copy link
Author

@pierrejego , @MaelREBOUX il n'y aurait pas une régression par rapport au //cadastrapp/services/getImageBordereau ?

@MaelREBOUX
Copy link
Member

Heu : on ne m'en n'a pas signalé dernièrement non.

@catmorales
Copy link
Author

Après analyse, ce problème ressemble beaucoup à #548

@catmorales
Copy link
Author

Bon suite à échange avec @pierrejego ce matin et test avec notre DSI:

  • le problème n'est pas lié à un blocage F5 car les requêtes passent correctement
  • le cookie est rejeté en raison des 2 noms de domaines différents (celui du SP et celui du portail)
    J'ai repassé la plateforme sur la version 1.9 de cadastrapp et ça fonctionne à nouveau.

image

@landryb
Copy link
Member

landryb commented Jun 24, 2022

sans un F5 sur mon setup (ni rien de "compliqué" dans l'infra) je n'arrive pas non plus a avoir de carte sur le BP, avec le backend en v2.0.

je n'ai rien dans les logs du backend qui pointerait a un problème de xsd ou autre, par contre la seule "ERROR" est:

org.apache.fop.apps.FOUserAgent - Image not found. URI: http://localhost:8180/cadastrapp/services/getImageBordereau?parcelle=630044000ZH0141&fillcolor=00ff18&fillopacity=0.6&strokecolor=0112ff&strokewidth=2&basemapindex=0. (See position 1:936)

si je reproduis manuellement la requete faite par le backeend sur getImageBordereau, j'ai bien du xml d'erreur dans la sortie du backend au lieu d'une image:

java.lang.IllegalStateException: Unable to parse GetCapabilities document
        org.geotools.data.wfs.internal.GetCapabilitiesResponse.&lt;init&gt;(GetCapabilitiesResponse.java:118)
        org.geotools.data.wfs.internal.GetCapabilitiesRequest.createResponse(GetCapabilitiesRequest.java:57)
        org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:461)
        org.geotools.data.wfs.internal.WFSClient.internalIssueRequest(WFSClient.java:328)
        org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:338)
        org.geotools.data.wfs.internal.WFSClient.issueRequest(WFSClient.java:57)
        org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:287)
        org.geotools.data.ows.AbstractOpenWebService.&lt;init&gt;(AbstractOpenWebService.java:124)
        org.geotools.data.ows.AbstractOpenWebService.&lt;init&gt;(AbstractOpenWebService.java:97)
        org.geotools.data.wfs.internal.WFSClient.&lt;init&gt;(WFSClient.java:75)
        org.geotools.data.wfs.internal.WFSClient.&lt;init&gt;(WFSClient.java:65)
        org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:108)
        org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:63)
        org.geotools.data.DataAccessFinder.getDataStore(DataAccessFinder.java:117)
        org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:69)
        org.georchestra.cadastrapp.service.ImageParcelleController.createImageBordereauParcellaire(ImageParcelleController.java:147)

puis, si j'essaie de récupérer le getcapabilities WFS (avec GS 2.18.6 de l'autre coté) appelé par le backend:

$curl 'https://ids.dev.craig.fr/wxs/pci/wfs?REQUEST=GetCapabilities&version=1.0.0'
<?xml version="1.0" ?>
<ServiceExceptionReport
   version="1.2.0"
   xmlns="http://www.opengis.net/ogc"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd">
   <ServiceException>
      java.io.IOExceptionTranslator error
</ServiceException></ServiceExceptionReport>

enfin, si je regarde dans le log geoserver 2.18.6 lors de l'appel au GetCapabilities WFS:

Caused by: javax.xml.transform.TransformerException: Translator error
        at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:122)
        at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:100)
        at org.geoserver.wfs.response.GetCapabilitiesResponse.write(GetCapabilitiesResponse.java:54)
        ... 114 more
Caused by: java.lang.UnsupportedOperationException
        at org.geoserver.api.images.STACItemFeaturesResponse.getCapabilitiesElementName(STACItemFeaturesResponse.java:278)
        at org.geoserver.wfs.WFSGetFeatureOutputFormat.getCapabilitiesElementNames(WFSGetFeatureOutputFormat.java:141)
        at org.geoserver.wfs.CapabilitiesTransformer$WFS1_0$CapabilitiesTranslator1_0.handleGetFeature(CapabilitiesTransformer.java:572)
        at org.geoserver.wfs.CapabilitiesTransformer$WFS1_0$CapabilitiesTranslator1_0.handleCapability(CapabilitiesTransformer.java:482)
        at org.geoserver.wfs.CapabilitiesTransformer$WFS1_0$CapabilitiesTranslator1_0.encode(CapabilitiesTransformer.java:369)
        at org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:990)
        at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
        at org.geotools.xml.transform.TransformerBase$Task.run(TransformerBase.java:283)
        at org.geotools.xml.transform.TransformerBase.transform(TransformerBase.java:118)
        ... 116 more

tout ca pour dire ... que la chaine d'appels est bien compliquée, et qu'il y'a très peu de gestion d'erreur faite dans le backend cadastrapp pour arriver a savoir d'ou vient le problème.

Bref, pas certain que ce soit la même chose que votre problème, mais les symptomes sont similaires. je creuse.

@landryb
Copy link
Member

landryb commented Jun 24, 2022

en l'occurence, le backend cadastrapp force l'utilisation de la v1.0.0 de WFS, ce qui pose problème a geoserver 2.18.6 (cf georchestra/georchestra#3764). J'ai essayé en mettant ?version=1.1.0 dans la config des urls parcelle.wms.url et cadastre.wfs.url mais geotools force 1.0.0:

2022-06-24 15:25:38,897 [http-nio-8480-exec-21] DEBUG //cadastrapp/services/getImageBordereau - nouser - norole - noorg -o.g.c.s.ImageParcelleController - Call WFS with plot Id 630044000ZH0141 and WFS URL : https://ids.dev.craig.fr/wxs/pci/wfs?version=1.1.0?REQUEST=GetCapabilities&version=1.0.0
2022-06-24 15:25:39,515 [http-nio-8480-exec-21] ERROR //cadastrapp/services/getImageBordereau - nouser - norole - noorg -o.g.c.s.ImageParcelleController - Error while trying to init connection, please check configuration
java.io.IOException: Error parsing capabilities document: L'entité "eacute" était référencée, mais pas déclarée.

@pierrejego ? tu avais testé le backend v2.0 avec quelle version de geoserver en face ?

@landryb
Copy link
Member

landryb commented Jun 24, 2022

tout ca me semble très fragile, mais une fois "fixé" le WFS GetCapabilities 1.0.0 de geoserver, j'ai bien un fond de plan (venant des WMS IGN, en plus !!) et les objets de la couche WMS cadastrale sur mon BP - par contre la parcelle selectionnée n'est pas mise en surbrillance/stylée par dessus les autres ?

@landryb
Copy link
Member

landryb commented Aug 22, 2022

  • le cookie est rejeté en raison des 2 noms de domaines différents (celui du SP et celui du portail)

quel est exactement le message d'erreur ? coté client, coté serveur ? après discussion ce matin en copil, ca me semble probablement lié a la mise a jour spring de #598, qui est peut-etre plus strict sur certaines choses, et il faut peut-etre faire de la configuration d'environnement jetty pour autoriser des domaines supplémentaires pour les cookies.. @pierrejego une idée de ce coté la ?

@MaelREBOUX MaelREBOUX changed the title Pb d'impression des fonds de plan [BP] Pas de fond de plan (GeoTools force WFS 1.0.0) Jun 19, 2023
@MaelREBOUX MaelREBOUX added this to the v 2.1 milestone Jun 19, 2023
@pmauduit
Copy link
Member

pmauduit commented Jun 21, 2023

Par rapport aux problèmes sur ce ticket, pour avoir un peu investigué pour Rennes:

  • Je ne pense pas que le problème de cookie soit à l'origine du comportement observé ici ; ok dans la réponse on peut avoir un "set-cookie" qui traine, car cela peut venir du fonctionnement standard des webapps, mais vu que l'on passe par authentification basique à (quasi ? cf point suivant) chaque requête, peu importe que le client http utilisé honore l'en-tête http en question (et/ou gère un système de gestion des sessions)
  • Concernant le problème de parsing du getcapabilities qui peut être observé, j'ai remarqué que cadastrapp via geotools utilise la version "multithreaded http client" de geotools (package gt-http-commons), qui utilise http-commons et qui avait un comportement différent du module "client simple". http-commons attend de recevoir un code de retour 401 avant d'envoyer une authentification basique, alors qu'avec le client simple, elle est envoyée préemptivement. Cela a fait l'objet d'une contribution il y a quelques semaines: https://osgeo-org.atlassian.net/jira/software/c/projects/GEOT/issues/GEOT-7337 ; mais c'est déjà contournable dans geOrchestra en ajoutant "GeoTools.*MultithreadedHttpClient.*" dans la liste des userAgents du security-proxy.properties (qui va retourner un 401 si l'user-agent matche, au lieu de rediriger sur la page de login du CAS)
  • Concernant l'impression du bordereau parcellaire et la mise en surbrillance de la parcelle concernée qui manque, je pense que cela vient de la versions de geoserver. En test chez Rennes, j'ai un PNG vide qui est généré si je rejoue la requête avec le SLD (version GS 2.18.7-georchestra), alors que la même requête en production fonctionne (GS 2.17.5-georchestra)

@landryb
Copy link
Member

landryb commented Jul 3, 2023

après point en visio, les derniers soucis de parcelle selectionnée non en surbrillance sur les éditions de BP sont corrigés par #666, pas encore releasé mais en prod au craig (avec geoserver 2.18.7) depuis septembre 2022. A priori fonctionnel au puy en velay sans #666, mais avec un geoserver plus récent ?

on peut donc fermer ce ticket qui concernait le fond de plan blanc lors des éditions de BP qui était un souci de WFS 1.0 sur geoserver (corrigé entre autre par georchestra/geoserver@5095e28)

@landryb landryb closed this as completed Jul 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants