プロジェクト B のサーブレットからプロジェクト A の Bean を呼び出す Java EE サーバーがあります。両方のプロジェクトが同じ「セル」(クラスター) にあります。ロードバランサーも通過したいと思います。メッセージ駆動型 Bean や Web サービスを使用したくありません。
これを行う他の方法はありますか?それはどのように実装できますか?
プロジェクト B のサーブレットからプロジェクト A の Bean を呼び出す Java EE サーバーがあります。両方のプロジェクトが同じ「セル」(クラスター) にあります。ロードバランサーも通過したいと思います。メッセージ駆動型 Bean や Web サービスを使用したくありません。
これを行う他の方法はありますか?それはどのように実装できますか?
実際、しばらくして私は解決策を見つけました:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming
.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL,"corbaloc::boris:9811,:natasha
:9812");
Context ctx = new InitialContext(env);
TestEJBHome home = (TestEJBHome)
PortableRemoteObject.narrow(ctx.lookup("ejb/ejbs/TestEJBHome"),
TestEJBHome.class);
TestEJB bean = home.create();
ここから入手: http ://www.ibm.com/developerworks/websphere/techjournal/0807_pape/0807_pape.html
EJB を含むアプリケーションがクライアントと同じクラスターにデプロイされている場合、WebSphere は常に要求をクライアントと同じアプリケーション サーバー内の EJB にルーティングし、呼び出しは VM 内呼び出しになります (アウトではなく)。 -of-process 呼び出し)。これはプロセス アフィニティと呼ばれます。私の知る限り、プロセス アフィニティを回避または無効にする方法はありません。