検索

8.5.4. スコープ付き EJB クライアントコンテキストの使用

download PDF

概要

EJB を呼び出すには JBoss EAP 6 の以前のバージョンでは、通常、JNDI コンテキストを作成し、ターゲットサーバーを指す PROVIDER_URL を渡します。その JNDI コンテキストを使用してルックアップされた EJB プロキシーで行われた呼び出しはすべて、そのサーバーで終了します。スコープ付き EJB クライアントコンテキストを使用すると、ユーザーアプリケーションは、特定の呼び出しに使用される EJB レシーバーを制御できます。

リモートスタンドアロンクライアントでスコープ付き EJB クライアントコンテキストを使用する

スコープ付き EJB クライアントコンテキストが導入される前は、コンテキストは通常、クライアントアプリケーションにスコープされていました。スコープ付きクライアントコンテキストにより、EJB クライアントコンテキストを JNDI コンテキストでスコープできるようになりました。以下は、スコープ付き EJB クライアントコンテキストを使用して同じ Bean を 2 回呼び出すスタンドアロンのリモートクライアントアプリケーションの例です。

public class MyApplication { 
    public static void main(String args[]) {
 
        // Use the "foo" security credential connect to the server and invoke this bean instance
        final Properties ejbClientContextPropsOne = getPropsForEJBClientContextOne():
        final javax.naming.Context ctxOne = new javax.naming.InitialContext(ejbClientContextPropsOne);
        final MyBeanInterface beanOne = ctxOne.lookup("ejb:app/module/distinct/bean!interface");
        beanOne.doSomething();
        ...
        ctxOne.close();
 
        // Use the "bar" security credential to connect to the server and invoke this bean instance
        final Properties ejbClientContextPropsTwo = getPropsForEJBClientContextTwo():
        final javax.naming.Context ctxTwo = new javax.naming.InitialContext(ejbClientContextPropsTwo);
        final MyBeanInterface beanTwo = ctxTwo.lookup("ejb:app/module/distinct/bean!interface");
        beanTwo.doSomething();
        ...
        ctxTwo.close();
    }
}

スコープ付き EJB クライアントコンテキストを使用するには、EJB クライアントプロパティーをプログラムで設定し、コンテキスト作成時にプロパティーを渡します。プロパティーは、標準の jboss-ejb-client.properties ファイルで使用されているものと同じプロパティーのセットです。EJB クライアントコンテキストを JNDI コンテキストにスコープするには、org.jboss.ejb.client.scoped.context プロパティーを指定し、その値を true に設定する必要もあります。このプロパティーは、EJB クライアント API に、EJB レシーバーによってサポートされる EJB クライアントコンテキストを作成する必要があること、および作成されたコンテキストが、それを作成した JNDI コンテキストに対してのみスコープまたは表示されることを通知します。この JNDI コンテキストを使用してルックアップまたは呼び出された EJB プロキシーは、この JNDI コンテキストに関連付けられた EJB クライアントコンテキストのみを認識します。アプリケーションが EJB をルックアップして呼び出すために使用する他の JNDI コンテキストは、他のスコープ付き EJB クライアントコンテキストを認識しません。
org.jboss.ejb.client.scoped.context プロパティーを渡さず、EJB クライアントコンテキストにスコープされていない JNDI コンテキストは、デフォルトの動作を使用します。これは、通常、アプリケーション全体。
スコープ付き EJB クライアントコンテキストは、以前のバージョンの JBoss EAP での JNP ベースの JNDI 呼び出しに関連付けられていた柔軟性をユーザーアプリケーションに提供します。これにより、ユーザーアプリケーションは、どの JNDI コンテキストがどのサーバーと通信し、どのようにそのサーバーに接続するかをより細かく制御できます。
注記
スコープコンテキストでは、基になるリソースはコンテナーまたは API によって処理されなくなるため、InitialContext不要になったとき。いつInitialContextが閉じられると、リソースはすぐに解放されます。それにバインドされているプロキシーは無効になり、呼び出しは例外を出力します。を閉じられなかったInitialContextリソースとパフォーマンスの問題が発生する可能性があります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.