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で共有する別の方法はありますか?