我有兩個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