Domanda

Ho due guerre schierate nella stessa istanza di Tomcat 7 ed entrambi usano CXF + WSS4J. Le due app comunicano tramite sapone e gli intercettori WSS4J gestiscono le asserzioni SAML nelle testate di sapone. Quando si testano ogni guerra in isolamento, tutto funziona bene, ma quando entrambe le app sono distribuite e un'app invia un messaggio SOAP all'altra, ricevo il seguente ClasscastException:

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

Per me, questo implica un problema del caricatore di classe, ma ciò che non riesco a capire. Ogni app ha la sua copia di WSS4J nelle rispettive cartelle Web-INF/LIB e non vedo alcuna libreria WSS4J nelle librerie comuni di Tomcat.

In produzione queste due app molto probabilmente non utilizzeranno mai lo stesso JVM per non parlare dello stesso istanza di Tomcat, ma mi sentirò più a mio agio quando arriverò in fondo a questo problema. Aiuta anche a lanciare entrambe le app dalla stessa istanza di Tomcat nello sviluppo. Qualcuno ha qualche idea quale potrebbe essere il problema?

Aggiornamento 1:Ho distribuito ogni guerra in istanze di Tomcat separate che entrambi usano lo stesso JVM e ClasscastException scompare. Deve essere qualcosa che non capisco con il caricamento della classe Tomcat?

È stato utile?

Soluzione

From the WSS4J issue tracker:

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

STRTransform JCE provider throws java.lang.ClassCastException: org.jcp.xml.dsig.internal.dom.DOMSubTreeData incompatible with javax.xml.crypto.OctetStreamData in Websphere

Affected versions: 1.6

Ick...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top