同じTomcat7インスタンスに2つのWARをデプロイしていて、どちらもCXF+WSS4Jを使用しています。2つのアプリはSOAPを介して通信し、WSS4JインターセプターはSOAPヘッダーのSAMLアサーションを処理します。各戦争を個別にテストすると、すべてが正常に機能しますが、両方のアプリがデプロイされ、一方のアプリがもう一方のアプリにSOAPメッセージを送信すると、次のClassCastExceptionが発生します。
java.lang.ClassCastException: org.apache.ws.security.WSDocInfo cannot be cast to org.apache.ws.security.WSDocInfo
私にとって、これはクラスローダーの問題を意味しますが、具体的には何がわかりません。各アプリには、それぞれのWEB-INF / libフォルダーにWSS4Jの独自のコピーがあり、Tomcatの共通ライブラリにWSS4Jライブラリがありません。
本番環境では、これら2つのアプリが同じJVMを使用することはほとんどなく、同じTomcatインスタンスにあることは言うまでもありませんが、この問題の根底にあると、より快適に感じるでしょう。また、開発中の同じTomcatインスタンスから両方のアプリを起動するのにも役立ちます。誰かが問題が何であるかについて何か考えを持っていますか?
更新1: 両方が同じJVMを使用する別々のTomcatインスタンスに各戦争を展開し、ClassCastExceptionがなくなりました。Tomcatクラスのロードでは理解できないことでしょうか?