ClassCastException с несколькими войнами, развернутыми в Tomcat
-
27-10-2019 - |
Вопрос
У меня есть две войны, развернутые в одном и том же экземпляре 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?
Решение
От The WSS4J Tracker:
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
Ик ...