3.2.10. リモート呼び出しの変更
3.2.10.1. JBoss EAP 5 にデプロイされ、JBoss EAP 6 へリモート呼び出しを行うアプリケーションの移行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
概要
JBoss EAP 5 では、EJB リモートインターフェースはデフォルトで JNDI にてバインドされ、ローカルインターフェースの場合は「ejbName/local」、リモートインターフェースの場合は「ejbName/remote」という名前でした。クライアントアプリケーションは 「ejbName/remote」を使用して Bean をルックアップしました。
JBoss EAP 6 では、呼び出しの実行に新しい EJB クライアント API が導入されました。しかし、新しい API を使用するようコードを書き直したくない場合、以下の構文で既存のコードを編集すると、EJB へのリモートアクセスに
ejb:
BEAN_REFERENCE を使用できます。
以下は、ステートレス Bean 用の
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
以下は、ステートフル Bean 用の
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ejb:
BEAN_REFERENCE の構文になります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:
BEAN_REFERENCE の構文になります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
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 の任意の distinct name です。この例では distinct name は使用しないため、空の文字列を使用します。<bean-name>
- デフォルトでは Bean 実装クラスの簡単なクラス名になります。<fully-qualified-classname-of-the-remote-interface>
- リモートビューの完全修飾クラス名。
クライアントコードの更新
次のステートレス EJB を JBoss EAP 6 サーバーにデプロイしたことにします。これにより、Bean のリモートビューが公開されます。
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
サーバーおよびクライアントコードを含む完全な作業例はクイックスタートにあります。詳細については、https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/ にある JBoss EAP 6 向け『開発ガイド』の章「アプリケーションの開発」に記載された「クイックスタートチュートリアルの確認」を参照してください。
JNDI を使用したリモート呼び出しの詳細については、「JNDI を使用したリモートでのセッション Bean の呼び出し」 を参照してください。