ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド
FUJITSU Software

27.3.3 EJB参照の定義

EJBクライアントからEJBを呼び出すには、EJBのJNDI名とビジネスインタフェース名との対応関係を定義する必要があります。この情報をEJB参照と呼びます。以下の方法で指定したJNDI名について、EJB参照を定義する必要があります。

EJB参照は以下のどちらかの方法で定義します。

27.3.3.1 デプロイメント記述による定義

リモートビジネスインタフェースを使って呼び出すセションBeanはejb-refタグで、ローカルビジネスインタフェースを使って呼び出すセションBeanはejb-local-refタグで記述します。

以下はweb.xmlの記述例です。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

  ...

  <!-- リモートビジネスインタフェースを使って呼び出す
       セションBeanの情報を記述します。ローカルビジネス
       インタフェースの場合はejb-local-refタグを使います。-->
  <ejb-ref>
    <!-- セションBeanに付けるJNDI名です。
         先頭の java:comp/env/ を省いて指定します。-->
    <ejb-ref-name>ejb/OfficeBean</ejb-ref-name>
    <!-- EJBの種別です。セションBeanの場合は Sessionです。-->
    <ejb-ref-type>Session</ejb-ref-type>
    <!-- リモートビジネスインタフェース名です。
         ローカルビジネスインタフェースの場合はlocalタグを
         使います。-->
    <remote>ejboffice.ejb.Office</remote>
</ejb-ref> ... </web-app>

27.3.3.2 @EJBアノテーションによる定義

EJB参照を定義するには、クラスに@EJBアノテーションを付加します。name属性でJNDI名を、beanInterface属性でビジネスインタフェースのClassオブジェクトを指定します。JNDI名は先頭の java:comp/env/ を省いて指定します。

なお、@EJBアノテーションが使用できるクラスは、サーブレットクラス、セションBeanクラスなどであり、Java EEの仕様で決められています。

以下はEJBアプリケーションHelloBeanから、別のセションBeanを呼び出す場合の記述例です。

package hello.ejb;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.fujitsu.uji.ejb.bean.UjiSimpleStatelessBean;

@Stateless
@EJB(name="ejb/OfficeBean", beanInterface=ejboffice.ejb.Office.class)
public class HelloBean extends UjiSimpleStatelessBean implements Hello {
    ...
}