我有两个WAR部署到相同的Tomcat 7实例,并且都使用CXF + WSS4J。这两个应用程序通过SOAP进行通信,WSS4J拦截器处理SOAP标头中的SAML断言。当单独测试每战一切正常,但是当两个应用程序部署以及一个应用程序发送SOAP消息,其他的,我收到以下ClassCastException异常:在Tomcat中部署多个战争的ClassCastException
java.lang.ClassCastException: org.apache.ws.security.WSDocInfo cannot be cast to org.apache.ws.security.WSDocInfo
对我来说,这意味着一个类加载器的问题,但具体我不能弄清楚。每个应用程序在其各自的WEB-INF/lib文件夹中都有自己的WSS4J副本,并且在Tomcat的通用库中没有看到任何WSS4J库。
在生产中,这两个应用程序很可能永远不会使用相同的JVM,更不用说在同一个Tomcat实例中,但是当我深入到这个问题的底部时,我会感觉更舒适。它还有助于从开发中的相同Tomcat实例启动这两个应用程序。有没有人有任何想法可能是什么问题?
UPDATE 1: 我将每场战争部署在两个使用相同JVM且ClassCastException消失的独立Tomcat实例中。必须是我不明白与Tomcat类加载?
WEBAPPS应该已经分离的类加载ERS。是否有堆栈跟踪? – JoseK