ClassCastException с несколькими войнами, развернутыми в Tomcat

У меня есть две WAR, развернутые в одном экземпляре Tomcat 7, и обе используют CXF + WSS4J. Эти два приложения взаимодействуют через SOAP, а перехватчики WSS4J обрабатывают утверждения SAML в заголовках SOAP. При тестировании каждой войны в отдельности все работает нормально, но когда оба приложения развернуты и одно приложение отправляет SOAP-сообщение другому, я получаю следующее исключение ClassCastException:

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

Для меня это подразумевает проблему загрузчика классов, но что конкретно я не могу понять. Каждое приложение имеет свою собственную копию WSS4J в своих соответствующих папках WEB-INF/lib, и я не вижу никакой библиотеки WSS4J в общих библиотеках Tomcat.

В работе эти два приложения, скорее всего, никогда не будут использовать одну и ту же JVM, не говоря уже о том, чтобы быть в одном и том же экземпляре Tomcat, но я буду чувствовать себя более комфортно, когда я доберусь до сути этой проблемы. Это также помогает запускать оба приложения из одного экземпляра Tomcat в процессе разработки. У кого-нибудь есть идеи, в чем может быть проблема?

ОБНОВЛЕНИЕ 1: я развернул каждую войну в отдельных экземплярах Tomcat, в которых используется одна и та же JVM, и исключение ClassCastException исчезло. Должно быть что-то, чего я не понимаю с загрузкой классов Tomcat?

1 ответ

Решение

Из трекера проблем WSS4J:

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

Поставщик STRTransform JCE создает исключение java.lang.ClassCastException: org.jcp.xml.dsig.internal.dom.DOMSubTreeData, несовместимое с javax.xml.crypto.OctetStreamData в Websphere.

Затронутые версии: 1.6

Ик...

Другие вопросы по тегам