Projekt

Allgemein

Profil

Fehler #765

Person Avatar?id=734&size=22x22

Exception beim Parsen einer GetRecords-Response in CSW Level 1.1

Von Ticketmelder GDI-DE vor etwa 3 Jahren hinzugefügt. Vor mehr als 1 Jahr aktualisiert.

Status:
Erledigt
Priorität:
Mittel
Zugewiesen an:
Gregor Scharf
Kategorie:
OGC CSW 2.0.2 AP ISO 1.0

Beschreibung

Hallo,

beim Ausführen der Test CSW Level 1.1 mit der Testsuite Version 2.1.28 schlägt der Test

csw:InterfaceBindings.GetRecords-InvalidRequest

fehl. Dabei wird auf dem Server eine Exception geloggt, die auf einen fehlerhaften XPath-Ausdruck in der zugegörigen ctl-Datei hinweist. Vermutlich gibt es ein Problem beim Auflösen der Namespaces.

Es treten weitere ähnliche Fehler bei anderen Tests auf.

Viele Grüße

Die zu parsende CSW-Response lautete:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<env:Fault>
<env:Code>
<env:Value>env:Receiver</env:Value>
</env:Code>
<env:Reason>
<env:Text xml:lang="en">A server exception was encountered.</env:Text>
</env:Reason>
<env:Detail>
<ows:ExceptionReport xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:ns10="http://www.w3.org/2001/SMIL20/Language" xmlns:ns9="http://www.w3.org/2001/SMIL20/" xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0.0">
<ows:Exception exceptionCode="MissingParameterValue">
<ows:ExceptionText>Query.typeNames is not provided.</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
</env:Detail>
</env:Fault>
</env:Body>
</env:Envelope>

Die geloggte Exception:

java.io.IOException: Error while contacting address "http://10.8.10.195:8602/preludio2/servants/de/disy/preludio2/service/cat/csw/v_2_0_2/GetRecordById$Post$SOAP": 500 Server Error
at de.supportgis.gdi.TECoreGDI.parse(TECoreGDI.java:521)
at com.occamlab.te.TECore.parse(TECore.java:1784)
at de.supportgis.gdi.TECoreGDI.request(TECoreGDI.java:656)
at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.sf.saxon.functions.ExtensionFunctionCall.invokeMethod(ExtensionFunctionCall.java:533)
at net.sf.saxon.functions.ExtensionFunctionCall.call(ExtensionFunctionCall.java:256)
at net.sf.saxon.functions.ExtensionFunctionCall.iterate(ExtensionFunctionCall.java:147)
at net.sf.saxon.expr.PathExpression.iterate(PathExpression.java:848)
at net.sf.saxon.sort.DocumentSorter.iterate(DocumentSorter.java:84)
at net.sf.saxon.instruct.CopyOf.processLeavingTail(CopyOf.java:292)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:94)
at net.sf.saxon.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:282)
at net.sf.saxon.expr.ExpressionTool.evaluate(ExpressionTool.java:295)
at net.sf.saxon.expr.LetExpression.eval(LetExpression.java:341)
at net.sf.saxon.expr.LetExpression.process(LetExpression.java:372)
at net.sf.saxon.instruct.ForEach.processLeavingTail(ForEach.java:300)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:175)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:343)
at net.sf.saxon.Controller.transformDocument(Controller.java:1736)
at net.sf.saxon.Controller.transform(Controller.java:1560)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:190)
at com.occamlab.te.TECore.executeTemplate(TECore.java:526)
at de.supportgis.gdi.TECoreGDI.executeTest(TECoreGDI.java:353)
at de.supportgis.gdi.TECoreGDI.callTest(TECoreGDI.java:752)
at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.sf.saxon.functions.ExtensionFunctionCall.invokeMethod(ExtensionFunctionCall.java:533)
at net.sf.saxon.functions.ExtensionFunctionCall.call(ExtensionFunctionCall.java:256)
at net.sf.saxon.functions.ExtensionFunctionCall.iterate(ExtensionFunctionCall.java:147)
at net.sf.saxon.expr.Expression.evaluateItem(Expression.java:352)
at net.sf.saxon.instruct.SimpleContentConstructor.evaluateItem(SimpleContentConstructor.java:261)
at net.sf.saxon.instruct.ValueOf.processLeavingTail(ValueOf.java:233)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:625)
at net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:625)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:94)
at net.sf.saxon.instruct.ForEach.processLeavingTail(ForEach.java:300)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:551)
at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:175)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:343)
at net.sf.saxon.Controller.transformDocument(Controller.java:1736)
at net.sf.saxon.Controller.transform(Controller.java:1560)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:190)
at com.occamlab.te.TECore.executeTemplate(TECore.java:526)
at de.supportgis.gdi.TECoreGDI.executeTest(TECoreGDI.java:353)
at de.supportgis.gdi.TECoreGDI.execute_test(TECoreGDI.java:271)
at de.supportgis.gdi.TECoreGDI.execute(TECoreGDI.java:204)
at de.supportgis.gdi.TECoreGDI.run(TECoreGDI.java:1375)
at de.supportgis.gdi.gdigui.te.CTLRunner.run(CTLRunner.java:207)
at de.supportgis.gdi.gdigui.te.TEAMRunnerContainer.run(TEAMRunnerContainer.java:219)
at de.supportgis.gdi.gdigui.te.ImmediateTestExecutor.execute(ImmediateTestExecutor.java:28)
at org.quartz.core.JobRunShell.run(JobRunShell.java:206)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:548)

Historie

#1 Avatar?id=734&size=24x24 Von Gregor Scharf vor etwa 3 Jahren aktualisiert

  • Projekt wurde von GDI-DE Registry zu GDI-DE Testsuite geändert
  • Kategorie wurde auf OGC CSW 2.0.2 AP ISO 1.0 gesetzt
  • Zugewiesen an wurde auf Janis Blank gesetzt
  • Zielversion wurde auf GDI-DE Testsuite Release 2.1.29 gesetzt
  • Privat wurde von Ja zu Nein geändert

#2 Von Anonym vor etwa 3 Jahren aktualisiert

Der Server liefert eine korrekte Exception zurück, wie in dem Test gefordert. Zusätzlich setzt er den HTTP-Statuscode aber auf 500 (interner Serverfehler). Bei Codes über 400 wird die Bearbeitung von der TEAMEngine abgebrochen und die obenstehende Fehlermeldung ausgegeben. Diese Weiche hatte ich im April mal eingebaut, weil solche Statuscodes normalerweise bedeuten, das kein verarbeitbares XML für die TEAMEngine zurückkommt und dies zu einer (für den Nutzer) unkenntlichen Fehlermeldung führt.

Der Server sollte hier auch keinen internen Serverfehler melden. Eine Anfrage wurde gesendet, der Server hat erkannt, dass sie ungültig ist und hat entsprechend geantwortet. Da ist kein Serverfehleraufgetreten und es ist im Standard auch nicht vorgesehen.

#3 Person Von Janis Blank vor etwa 3 Jahren aktualisiert

  • Status wurde von Neu zu Rückfrage geändert

#4 Person Von Janis Blank vor etwa 3 Jahren aktualisiert

Wie kam die Response denn zustande? Wurde sie sicher an die Testsuite gesendet?
Gehören das Postfix $Post$SOAP wirklich zur Adresse oder hat die Testsuite dass fälschlicherweise angehangen?

Gibt es Zugang zu dem Capabilities-Dokument oder sogar zu dem Service?

#5 Person Von Janis Blank vor fast 3 Jahren aktualisiert

  • Zugewiesen an wurde von Janis Blank zu Gregor Scharf geändert

#6 Von Anonym vor fast 3 Jahren aktualisiert

Die Response ist die Antwort auf den durch die Testsuite generierten Request. Dabei wird von der Testsuite absichtlich ein fehlerhafter Request generiert, um die richtige Fehlerbehandlung zu testen.

Die Response wurde so sicher an die Testsuite gesendet.

Die Adresse des Servers endet tatsächlich auf $Post$SOAP.

Service und Capabilities-Dokument sind nicht zugänglich. Das Capabilities-Dokument kann aber bereitgestellt werden.

Bei einer Rücksprache fiel auf, dass die Response nicht mit Http-Status-Code 200 gesendet wurde, sondern einen Error-Status enthielt. Wird die gleiche Response mit einem Http-Status-Code von 200 gesendet, tritt das Problem nicht auf.

#7 Avatar?id=734&size=24x24 Von Gregor Scharf vor fast 3 Jahren aktualisiert

  • Zugewiesen an wurde von Gregor Scharf zu Janis Blank geändert

Hi Janis, kann die Fehlerbehandlung nachgebessert werden?

#8 Von Anonym vor fast 3 Jahren aktualisiert

  • Zielversion wurde von GDI-DE Testsuite Release 2.1.29 zu GDI-DE Testsuite Release 2.1.30 geändert

#10 Von Anonym vor mehr als 2 Jahren aktualisiert

  • Zielversion wurde von GDI-DE Testsuite Release 2.1.30 zu GDI-DE Testsuite Release 2.1.31 geändert

#11 Avatar?id=734&size=24x24 Von Gregor Scharf vor mehr als 2 Jahren aktualisiert

Waere es vllt. eine Idee, auf XSLT 3.0 zu updaten und dann mit try-catch [1] die Exception von der TeamEngine abzufangen? Ist das zu aufwendig?

[1]: http://www.saxonica.com/html/documentation/xsl-elements/try.html

#12 Avatar?id=734&size=24x24 Von Gregor Scharf vor mehr als 1 Jahr aktualisiert

  • Status wurde von Rückfrage zu Erledigt geändert
  • Zugewiesen an wurde von Janis Blank zu Gregor Scharf geändert

Timeout/closed. Die neue Testsuite (Version 3.0) hat dieses Problem hoffentlich nicht mehr.

Auch abrufbar als: Atom PDF