2011-09-08 90 views
1

我有兩個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類加載?

+0

WEBAPPS應該已經分離的類加載ERS。是否有堆棧跟蹤? – JoseK

回答

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

伊克...

+2

儘管此鏈接可能回答此問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Gamb

+0

謝謝Gamb,編輯我的答案 – Jpnh