3.2.12. リモート呼び出しの変更


3.2.12.1. リモート呼び出しを JBoss EAP 6 に作成する JBoss EAP 5 のデプロイされたアプリケーションの移行

概要

JBoss EAP 5 では、EJB リモートインターフェースは JNDI でバインドされ、デフォルトではローカルインターフェースの EJB_NAME/local でバインドされ、リモートインターフェースの EJB_NAME/remote がバインドされました。その後、クライアントアプリケーションは、EJB_NAME/remote を使用して Bean を検索しました。

JBoss EAP 6 では、リモート呼び出しに新しい EJB クライアント API が導入されました。ただし、新しい API を使用するためにコードを書き直さない場合は、以下の構文を使用して EJB へのリモートアクセスに ejb:BEAN_REFERENCE を使用するよう既存のコードを変更できます。
ステートレス Bean の場合、ejb:BEAN_REFERENCE 構文は以下のようになります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ステートフル Bean の場合、ejb:BEAN_REFERENCE 構文は以下のようになります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
上記の構文で置換される値は次のとおりです。
  • <app-name> - デプロイされた EJB のアプリケーション名。通常、これは .ear 接尾辞のない ear 名ですが、名前は application.xml ファイルで上書きできます。アプリケーションが .ear としてデプロイされていない場合、この値は空の文字列になります。この例では EAR としてデプロイされていないことを仮定します。
  • <module-name> - サーバーにデプロイされた EJB のモジュール名。これは通常、.jar サフィックスのない EJB デプロイメントの jar 名ですが、ejb-jar.xml を使用して上書きできます。この例では、EJB が jboss-ejb-remote-app.jar にデプロイされたことを仮定するため、モジュール名は jboss-ejb-remote-app になります。
  • <distinct-name> - EJB の任意の一意の名前。この例では、別の名前を使用しないため、空の文字列を使用します。
  • <bean-name> - デフォルトでは、Bean 実装クラスのシンプルなクラス名です。
  • <fully-qualified-classname-of-the-remote-interface> - リモートビューの完全修飾クラス名。

クライアントコードの更新

以下のクライアントコードの例では、以下のステートレス EJB を JBoss EAP 6 サーバーにデプロイしていることを前提としています。@Remote アノテーションを使用して Bean のリモートビューを公開することに注意してください。

例3.8 ステートレスセッション Bean コードの例

@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {
 
    @Override
    public int add(int a, int b) {
        return a + b;
    }
 
    @Override
    public int subtract(int a, int b) {
        return a - b;
    }
}
JBoss EAP 5 クライアントコードでは、JNDI 名を使用して InitialContext を作成し、EJB を検索しました。

例3.9 JBoss EAP 5 クライアントの例

InitialContext ctx = new InitialContext();
RemoteCalculator calculator = (RemoteCalculator) ctx.lookup("CalculatorBean/remote");
int a = 204;
int b = 340;
int sum = calculator.add(a, b);
JBoss EAP 6 では、上記のように Hashtable を作成し、Bean 参照のプロパティーを設定します。以下は、クライアントルックアップおよび呼び出しの例です。

例3.10 JBoss EAP 6 のステートレスクライアントの例

final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
final String appName = "";
final String moduleName = "jboss-ejb-remote-app";
final String distinctName = "";
final String beanName = CalculatorBean.class.getSimpleName();
final String viewClassName = RemoteCalculator.class.getName();
final RemoteCalculator statelessRemoteCalculator =  (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName);
 
int a = 204;
int b = 340;
int sum = statelessRemoteCalculator.add(a, b);
クライアントがステートフル EJB にアクセスしている場合は、コンテキストルックアップの最後に「?stateful」を追加する必要があります。

例3.11 JBoss EAP 6 のステートフルクライアントの例

final RemoteCalculator statefulRemoteCalculator =  (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")

サーバーおよびクライアントコードの両方を含む完全な作業例は、JBoss EAP 6 に同梱されるクイックスタートで確認できます。詳細は、JBoss EAP 6 『『開発ガイド』』 の「 『クイック 『スタートチュートリアルの確認』 」の章を参照して https://access.redhat.com/documentation/ja-jp/red_hat_jboss_enterprise_application_platform/?version=6.4 ください。
JNDI を使用したリモート呼び出しの詳細は、「JNDI を使用したリモートによるセッション Bean の呼び出し」 を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.