Frage

Ich habe zwei Kriege, die in derselben Tomcat 7 -Instanz eingesetzt werden, und beide verwenden CXF + WSS4J. Die beiden Apps kommunizieren über SOAP, und WSS4J -Interceptors behandeln SAML -Behauptungen in den SOAP -Headern. Wenn Sie jeden Krieg isoliert testen, funktioniert alles einwandfrei, aber wenn beide Apps bereitgestellt werden und eine App eine SOAP -Nachricht an die andere sendet, erhalte ich die folgende ClassCastException:

java.lang.ClassCastException: org.apache.ws.security.WSDocInfo cannot be cast to org.apache.ws.security.WSDocInfo

Für mich impliziert dies ein Problem der Klassenlader, aber was in spezifischem ich nicht herausfinden kann. Jede App verfügt über eine eigene Kopie von WSS4J in ihren jeweiligen Web-Inf/Lib-Ordnern, und ich sehe keine WSS4J-Bibliothek in Tomcats gemeinsamen Bibliotheken.

In der Produktion werden diese beiden Apps höchstwahrscheinlich nie das gleiche JVM verwenden, geschweige denn in derselben Tomcat -Instanz, aber ich werde mich wohler fühlen, wenn ich dieses Problem auf den Grund komme. Es hilft auch, beide Apps aus derselben Tomcat -Instanz in der Entwicklung zu starten. Hat jemand irgendwelche Ideen, wie das Problem sein könnte?

Update 1:Ich habe jeden Krieg in separaten Tomcat -Instanzen bereitgestellt, die beide dieselbe JVM verwenden und die ClassCastException verschwindet. Muss ich beim Laden von Tomcat -Klasse nicht verstehe?

War es hilfreich?

Lösung

Aus dem WSS4J -Ausgabe -Tracker:

https://issues.apache.org/jira/browse/wss-282

Strtransform JCE Provider löscht Java.lang.Internal.dom.dom.domsubtreedata, die mit javax.xml.crypto.octetetTeamdata in der Websphase nicht kompatibel sind.

Betroffene Versionen: 1.6

Ick ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top