8.5.5. スコープ付き EJB クライアントコンテキストを使用して EJB を設定する
概要
EJB は、マップベースのスコープコンテキストを使用して設定できます。これは、jboss-ejb-client.properties
にある標準プロパティーを使用して プロパティー
マップにプログラムで入力し、org.jboss.ejb.client.scoped.context
プロパティーに true
を指定し、InitialContext
作成時にプロパティーを渡すことで実現されます。
スコープコンテキストを使用する利点は、EJB を直接参照したり JBoss クラスをインポートしたりせずにアクセスを設定できることです。また、マルチスレッド環境で実行時にホストを設定して負荷分散する方法も提供します。
手順8.10 マップベースのスコープコンテキストを使用して EJB を設定する
プロパティーを設定します。
標準のjboss-ejb-client.properties
ファイルで使用されているのと同じプロパティーのセットを指定して、EJB クライアントのプロパティーをプログラムで設定します。スコープコンテキストを有効にするには、org.jboss.ejb.client.scoped.context
プロパティーを指定し、その値をtrue
に設定する必要があります。以下は、プログラムでプロパティーを設定する例です。// Configure EJB Client properties for the InitialContext Properties ejbClientContextProps = new Properties(); ejbClientContextProps.put(“remote.connections”,”name1”); ejbClientContextProps.put(“remote.connection.name1.host”,”localhost”); ejbClientContextProps.put(“remote.connection.name1.port”,”4447”); // Property to enable scoped EJB client context which will be tied to the JNDI context ejbClientContextProps.put("org.jboss.ejb.client.scoped.context", “true”);
コンテキスト作成でプロパティーを渡す
// Create the context using the configured properties InitialContext ic = new InitialContext(ejbClientContextProps); MySLSB bean = ic.lookup("ejb:myapp/ejb//MySLSBBean!" + MySLSB.class.getName());
追加情報
- ルックアップ EJB プロキシーによって生成されたコンテキストは、このスコープコンテキストによってバインドされ、関連する接続パラメーターのみを使用します。これにより、さまざまなコンテキストを作成して、クライアントアプリケーション内のデータにアクセスしたり、さまざまなログインを使用してサーバーに個別にアクセスしたりすることができます。
- クライアントでは、スコープ付き
InitialContext
とスコープ付きプロキシーの両方がスレッドに渡され、各スレッドが指定されたコンテキストで動作できるようになります。プロキシーを同時に使用できる複数のスレッドにプロキシーを渡すこともできます。 - スコープコンテキスト EJB プロキシーは、リモートコールでシリアル化されてから、サーバーで逆シリアル化されます。デシリアライズされると、スコープされたコンテキスト情報が削除され、デフォルトの状態に戻ります。デシリアライズされたプロキシーがリモートサーバーで使用されている場合、作成時に使用されていたスコープコンテキストがなくなったため、
EJBCLIENT000025
エラーが発生したり、EJB 名を使用して不要なターゲットを呼び出したりする可能性があります。