4

J2EE アプリケーションでは、weblogic で EJB2 を使用しています。

初期コンテキストの構築と EJB ホーム インターフェースの検索で時間を無駄にしないようにするために、Service Locator Patternを検討しています。

しかし、Web でいくつか検索した結果、InitialContext キャッシングにはこのパターンが推奨されることが多いにもかかわらず、EJB ホーム キャッシングについては否定的な意見があることがわかりました。

質問:

  • EJB ホーム検索結果をキャッシュしても安全ですか?
  • クラスタ ノードの 1 つが動作しなくなったらどうなりますか?
  • サービス ロケーターのキャッシュを更新せずに新しいバージョンの EJB をインストールするとどうなりますか?
4

3 に答える 3

4
Is it safe to cache EJB Home lookup result ?
What will happen if one my cluster node is no more working ? 

J2EE 内の ServiceLocator の目的は、EJB ホームをキャッシュし、高価な JNDI ルックアップを削減することです。デフォルトでは、EJB ホームはクラスター全体で負荷分散されるため、Weblogic では安全です。これにより、次のサーバーへのフェイルオーバーが自動的に許可されます。

この値は、ここhome-is-clusterableに記載されている weblogic-ejb-jar.xml の値によって制御されます。デフォルトはです。true

What will happen if I install a new version of the EJB without refreshing 
the service locator's cache ?

私は自分でそのような変更を試みたことはありません。ただし、ビルド/デプロイの一部として、Service Locator クラスも EJB への変更とともに再デプロイされると思います。したがって、新しいルックアップを行いますか?

EJB への変更中にクライアントが影響を受けない場合、メソッドを呼び出すと、キャッシュされた EJBHome は古い参照を返します。そのため、クライアントを強制的に更新する必要があります。

于 2010-04-28T10:30:38.213 に答える
4

EJB ホーム検索結果をキャッシュしても安全ですか?

はい。

クラスタ ノードの 1 つが動作しなくなったらどうなりますか?

サーバーがクラスタリング/WLM 用に構成されている場合、要求はクラスター内の別のサーバーにサイレントにフェイルオーバーする必要があります。ルーティング情報はスタブ IOR にエンコードされます。

サービス ロケーターのキャッシュを更新せずに新しいバージョンの EJB をインストールするとどうなりますか?

コンポーネントやホーム インターフェースではなく Bean を更新すると仮定すると、すべてが引き続き機能します。EJBHome は実質的にステートレス セッション Bean であるため、リクエストは、利用可能な場合は同じサーバーから、利用できない場合はクラスタ内の別のサーバーから引き続きアクセスできます。

EJB3 の @EJB インジェクションは、効果的にホーム キャッシングを促進することに注意してください。(ただし、これは明らかに間違っていますが、SFSB キャッシングも許可しているため、おそらく @EJB は私の主張を最もよくサポートしているとは言えません :-))。

于 2010-04-28T13:48:16.473 に答える
0

サービス ロケーターのキャッシュを更新せずに新しいバージョンの EJB をインストールするとどうなりますか?

アプリケーションが稼働すると、新しいインストールは EJBHome の要求よりもはるかに少なくなるはずです。
そのため、一時的な開発操作ではなく、頻繁なライブ操作に焦点を当て、関心を持つ必要があります。
必要に応じてキャッシュを無効にする機能を設計に組み込みます。

于 2010-04-28T11:10:49.007 に答える