1

WebSphere Application Server 7に問題があります。WASAとBに2つのアプリケーションがインストールされています。Bは、AのローカルEJBインターフェースを使用したいと考えています。

ローカルEJBインターフェースを含むモジュールは、AのEARの一部です。

私が試したのは、Bのデプロイメントにモジュールへの参照を含めることでした。私が見つけた問題は、インターフェースを調べているときに、次のことでした。

InitialContext ic = new InitialContext();
//succeeds
Object obj = ic.lookup("ejblocal:sample.MyEJBLocal");
//fails with ClassCastException
MyEJBLocal localBean = (MyEJBLocal) obj;

インターフェイスのクラス名の前にランダムな文字が付いているため、プログラムがクラッシュします。

Cannot cast type SL07SMyEJBLocal to MyEJBLocal these types are incompatible.

WASを試してみましたが、サーバーのクラスローダー設定を複数から単一に変更することでキャストを成功させることができました。

Q-サーバー上のすべてのアプリケーションに1つのクラスローダーを使用するというアイデアはあまり好きではありません-EJBローカルインターフェイスをアプリケーションAとBで共有する別の方法はありますか?

4

1 に答える 1

1

InfoCenter のEJB モジュールモジュールの「ローカル クライアント ビュー」セクションを参照してください(8.5 InfoCenter にリンクしましたが、アドバイスはすべてのバージョンに適用されます)。基本的に、ローカル インターフェイスを共有するには、両方のアプリケーションが同じクラスのビューを持っていることを確認する必要があります。最も一般的な方法は、サーバーに関連付けられた共有ライブラリを使用することです。アプリケーション間でローカル EJB を共有する場合のその他の注意事項に注意してください。

于 2012-08-08T21:39:47.230 に答える