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 をルックアップしました。
ejb:BEAN_REFERENCE を使用できます。
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 の任意の distinct name です。この例では distinct name は使用しないため、空の文字列を使用します。<bean-name>- デフォルトでは Bean 実装クラスの簡単なクラス名になります。<fully-qualified-classname-of-the-remote-interface>- リモートビューの完全修飾クラス名。
次のステートレス EJB を JBoss EAP 6 サーバーにデプロイしたとします。これにより、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 では、クライアント EJB のルックアップと呼び出しが次のようにコード化されていました。
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 では前述の情報を使用して、クライアントのルックアップと呼び出しが次のようにコード化されます。
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" を追加する必要があります。
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.