Question

J'ai deux WARs déployés dans la même instance Tomcat 7, et à la fois l'utilisation CXF + WSS4J. Les deux applications communiquent via SOAP, et WSS4J intercepteurs poignée assertions SAML dans les en-têtes SOAP. Lors du test de chaque guerre dans tout l'isolement fonctionne très bien, mais quand les deux applications sont déployées et une application envoie un message SOAP à l'autre, je reçois le ClassCastException suivant:

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

Pour moi, cela implique un problème de chargeur de classe, mais ce qui en particulier, je ne peux pas comprendre. Chaque application a sa propre copie de WSS4J dans leurs dossiers WEB-INF / lib respectives, et je ne vois aucune bibliothèque WSS4J dans les bibliothèques communes de Tomcat.

Dans la production de ces deux applications uiliserez probablement jamais la même machine virtuelle Java et encore moins être dans la même instance Tomcat, mais je vous sentirez plus à l'aise quand je suis au fond de cette question. Il aide aussi à lancer les applications de la même instance Tomcat dans le développement. Est-ce que quelqu'un a des idées ce que la question pourrait être?

UPDATE 1: Je déployé chaque guerre dans les cas Tomcat distincts qui utilisent la même machine virtuelle Java et le ClassCastException disparaît. Doit être quelque chose que je ne comprends pas le chargement des classes Tomcat?

Était-ce utile?

La solution

De la question WSS4J Tracker:

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

STRTransform fournisseur JCE lance java.lang.ClassCastException: org.jcp.xml.dsig.internal.dom.DOMSubTreeData incompatible avec javax.xml.crypto.OctetStreamData dans Websphere

Versions affectées: 1.6

Ick ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top