Tomcatに展開された複数の戦争を伴うClassCastException
-
27-10-2019 - |
質問
同じTomcat 7インスタンスに2つの戦争を展開し、どちらもCXF + WSS4Jを使用しています。 2つのアプリはSOAPを介して通信し、WSS4JインターセプターはSOAPヘッダーのSAMLアサーションを処理します。各戦争を単独でテストするとき、すべてが正常に機能しますが、両方のアプリが展開され、1つのアプリが他のアプリに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とClassCastExceptionがなくなる別々のTomcatインスタンスに各戦争を展開しました。 Tomcatクラスの読み込みで私が理解していないものでなければなりませんか?
解決
WSS4J問題トラッカーから:
https://issues.apache.org/jira/Browse/WSS-282
strantransform jceプロバイダーはjava.lang.classcastexception:org.jcp.xml.dsig.internal.domsubtreedataをjavax.xml.crypto.octetttreamdataと互換性があります。
影響を受けるバージョン:1.6
ICK ...