Closed VoidTenshi closed 4 years ago
Das liegt an der strikten Default-Konfiguration in Sachen XML-Security, siehe Security configuration. Möglich wäre die Nutzung einer anderen ResolvingConfigurationStrategy.
Eigentlich sollte die vorhandene Strategie "STRICT_LOCAL" XML-Daten aus einem lokalen JAR laden können. Diese kann folgendermaßen aktiviert werden
Configuration config = Configuration.load(scenarioFile).resolvingMode(ResolvingMode.STRICT_LOCAL).build();
...
Falls das nicht hilft, wäre ein Beispielprojekt nützlich. Kurzfristig würde dann nur eine eigene ResolvingConfigurationStrategy helfen.
Ich hab mal einen Test eingebaut, der Daten aus nem jar lädt. Siehe DefaultCheckTest.java. Das Laden funktioniert auch mit der Default-Strategy "STRICT_RELATIVE", weil jar-URIs auch mit file
-access gleichgesetzt werden im JDK.
Grundsätzlich ist zu beachten: Laden aus einem jar ist nicht identisch mit dem Laden aus dem Classpath. Classpath-URIs sind nicht opaque, haben also keine Hierarchie. Beim relativen Resolving braucht es aber sowas, weshalb für jar-URIs da ein kleiner Hack eingebaut ist. Der funktioniert aber nur, solange die aufzulösenden Pfade alle im selben jar sind. Man kann das "Repository" also nicht über mehrere jars verstreuen.
@VoidTenshi Es funktioniert alse grundsätzlich. Ich werde das Ticket daher schließen. Sollte dennoch ein Problem in diesem Kontext bestehen, bräuchte ich ein Minimal-Beispiel im Stile des oben genannten Tests mit genauer Struktur des jars um das nachvollziehen zu können.
Hallo zusammen,
ähnlich wie in Issue #45 verwende ich den Validator in einer andere Applikation. Jedoch basiert diese nicht auf Spring Boot, wie in Issue #45.
Dabei rufe ich die scenarios.xml wie folgt auf:
Allerdings bekomme ich anschließend diese Fehlermeldung:
Caused by: org.xml.sax.SAXParseException: Externes Schemadokument "jar:file:/Testprogram/LIB/test.jar!/validator/resources/ubl/2.1/xsd/common/UBL-CommonAggregateComponents-2.1.xsd" konnte nicht gelesen werden, weil der Zugriff ("jar") nicht zulässig ist. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLEntityManager$2.reportError(Unknown Source) at com.ibm.xml.jaxp.util.ExternalResourceHelper$ProtocolValidator.validate(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.resolveEntity(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.resolveDocument(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.resolveSchema(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.constructTrees(Unknown Source) at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source) at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source) at de.kosit.validationtool.impl.ContentRepository.createSchema(ContentRepository.java:77) ... 29 common frames omitted