マシンに2つのプロファイルがあり、1つのプロファイルにEJBをデプロイしました。これは、別のプロファイルのPOJOから検索できます。しかし、ルックアップを実行しているプロファイルは、最終的に独自のノードでルックアップを実行します。この2つのアプリケーションを2つの異なるマシンにデプロイすると、ルックアップを実行できます。WASで仮想マシン名を作成すると役立つとのことですが、使い方がわかりません。この問題を解決するにはどうすればよいですか。
ありがとう、
Kshitij Gupta
「しかし、ルックアップを実行しているプロファイルは、最終的には独自のノードでルックアップを実行します。」
あなたが言っていることを私が理解していることを確認させてください:
アプリケーションはプロファイルAで実行され、EJBはプロファイルBにデプロイされます。
プロファイルB内には、いくつかのノードN1、N2、...があります。ルックアップを実行すると、アプリケーションはノードの1つ、たとえばN2に接続します。デフォルトでは、N2でルックアップを実行すると、ノードN2に関連付けられたJNDIツリーが表示されます。これは、EJBがその名前を登録した場所ではない可能性があります。
それはあなたの問題ですか?
その場合、2つの可能なアプローチがあります。
オプション1:JNDIツリー全体を任意のノードから表示できます。インフォセンターのJNDI図を参照してください。次に、このスタイルでパスを指定することにより、階層をナビゲートできます。
cells/<mycell>/nodes/<ejbNode>/... etc.
どこからでも。
このアプローチの問題は、アプリケーションがセルのトポロジーを理解する必要があることです。ノード名(またはクラスター名)を変更する必要がある場合は、ルックアップ文字列が変更されます。それは脆弱な解決策です。
オプション2:代わりに、EJBレジスタをJNDIツリーの安定した場所に配置します。これが、セル永続パーティションの目的です。最初にEJB(またはそのDD)を変更して、名前を次のように指定します。
cell/persistent/myEjb
次に、その文字列をルックアップで使用します。
今日、顧客のマシンへのインストール中にこの問題に直面しました。なぜうまくいかなかったのか、4日間苦労しました。なぜこれをすぐに発見したのかわかりませんが、解決策は非常に簡単です。
同じホスト名に 2 つの WAS がある場合、クライアント WAS はサーバーが同じであると考えているため、CORBA を介したルックアップを回避します。2 つの異なるホスト名と IP アドレスに 2 つの WAS をバインドすることを解決しました。これでうまくいきます。