1

同じ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クラスのロードでは理解できないことでしょうか?

4

1 に答える 1

1

WSS4J課題追跡システムから:

https://issues.apache.org/jira/browse/WSS-282

STRTransform JCEプロバイダーはjava.lang.ClassCastExceptionをスローします:org.jcp.xml.dsig.internal.dom.DOMSubTreeDataはWebsphereのjavax.xml.crypto.OctetStreamDataと互換性がありません

影響を受けるバージョン:1.6

いや...

于 2011-10-26T02:23:33.190 に答える