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

20.2.1 セションBeanの作成方法

セションBeanを作成するには、以下のファイルを作成する必要があります。

以下のクラスは必要に応じて作成します。

20.2.1.1 Javaソースファイルと関係定義ファイルの作成

セションBeanクラス

セションBeanクラスは、com.fujitsu.uji.ejb.bean.UjiSessionBeanクラスを継承して作成してください。メソッドを追加する必要はありません。以下の例は、セションBeanクラスのクラス名をejboffice.ejb.OfficeEJBとした場合のソースファイルです。

package ejboffice.ejb;
import com.fujitsu.uji.ejb.bean.UjiSessionBean;

public class OfficeEJB extends UjiSessionBean {
}

ホームインターフェイス

ホームインターフェイスはcom.fujitsu.uji.ejb.UjiSessionHomeインターフェイスを継承して作成します。以下のようにcreate()メソッドを作成してください。

package ejboffice.ejb;

import com.fujitsu.uji.ejb.UjiSessionHome;

public interface OfficeEJBHome extends UjiSessionHome {
        public OfficeEJBRemote create() 
                throws java.rmi.RemoteException, javax.ejb.CreateException, 
                       java.lang.reflect.InvocationTargetException;
}

create()メソッドのシグネチャは次のようにしてください。

public [リモートインターフェイス名] create() 
throws java.rmi.RemoteException, javax.ejb.CreateException, 
    java.lang.reflect.InvocationTargetException;

ここで、[リモートインターフェイス名]の部分はリモートインターフェイスのインターフェイス名で置き換えてください。

リモートインターフェイス

リモートインターフェイスはcom.fujitsu.uji.ejb.UjiSessionインターフェイスを継承して作成します。メソッドの追加定義は必要ありません。

package ejboffice.ejb;

import com.fujitsu.uji.ejb.UjiSession;

public interface OfficeEJBRemote extends UjiSession {
}

ビジネスクラス

ビジネスクラスには、セションBeanで実行する処理を記述したメソッドを作成します。ビジネスクラスの例を示します。

package ejboffice.ejb;

import ejboffice.*;
import com.fujitsu.uji.DispatchContext;
import com.fujitsu.uji.GenericHandler;

public class OfficeHandler extends GenericHandler {

    // クライアントからの呼び出しを受けて実行されるメソッドを定義します。
    // クライアントから受信したデータBeanが第2引数に与えられます。
    public Object search(DispatchContext context, ViewBean dataBean) {

        // 実行する処理を記述します。   
        int index=dataBean.getIndex();
        ...
        dataBean.putHeader(header);

        // クライアントに返却するオブジェクトをreturnで指定します。
        return dataBean;
    }

    // 必要なだけメソッドを定義します。
    ...
}

ビジネスクラスの作成方法の詳細は“3.1 ビジネスクラス”を参照してください。以下では、セションBeanのビジネスクラスに特有の事項を説明します。

コマンドマップ

コマンドマップには、クライアントから受信したデータに応じて、どのビジネスクラスのメソッドを呼び出すのかを記述します。以下は記述例です。

ejboffice.ViewBean;getArea=ejboffice.ejb.OfficeHandler.getArea
ejboffice.ViewBean;search=ejboffice.ejb.OfficeHandler.search
ejboffice.RenewBean;find=ejboffice.ejb.OfficeHandler.find
ejboffice.RenewBean;update=ejboffice.ejb.OfficeHandler.update

この記述例の1行目は以下の内容を意味しています。

コマンドマップの記述方法の詳細は“3.6.1 コマンドマップ”を参照してください。

セションクラス

セションクラスはセションを通して使われるデータを保持するためのクラスです。セションクラスに記憶させたデータは、ビジネスクラスの実行終了後でもセションBeanのオブジェクトが存在する限り保持されます。アプリケーション独自の情報をセションクラスに記憶させたい場合は、ユーザー定義のセションクラスを使用してください。ユーザー定義のセションクラスの作成方法は“3.3 セションクラス”を参照してください。

アプリケーションクラス

アプリケーションクラスは同一のJVMで動作するセションBeanのオブジェクトで共有されるデータを保持します。アプリケーションクラスに記憶させたデータは、他のセションBeanオブジェクトからも参照されます。アプリケーション独自の情報をアプリケーションクラスに記憶させたい場合は、ユーザー定義のアプリケーションクラスを使用してください。ユーザー定義のアプリケーションクラスの作成方法は、“3.4 アプリケーションクラス”を参照してください。

ファクトリクラス

ファクトリクラスはアプリケーションクラスやセションクラスのインスタンスを作成するクラスです。ユーザー定義のアプリケーションクラスやセションクラスを使用する場合は、ユーザー定義のファクトリクラスを作成し、そのクラス名を初期化パラメタで指定する必要があります。ファクトリクラスの作成方法は、“3.5 ファクトリクラス”を参照してください。初期化パラメタの設定方法は“セションBeanの初期化パラメタの設定”を参照してください。

20.2.1.2 セションBeanの初期化パラメタの設定

Apcoordinatorで作成したアプリケーションの動作を設定するパラメタを初期化パラメタと呼びます。初期化パラメタの一覧は“11.2 初期化パラメタ”を参照してください。初期化パラメタの指定方法は2通りあります。

20.2.1.3 デプロイメント記述 (ejb-jar.xml)

デプロイメント記述はEJBの構成や設定を記述するXMLファイルです。デプロイメント記述には以下の情報を記述します。

設定項目

デプロイメント記述のタグ

設定値

EJBの名前

ejb-name

セションBeanに付ける名前。同一のejb-jarファイルに複数のEJBが格納されている場合は、それぞれ異なる名前を付けます。

EJBのクラス

ejb-class

セションBeanクラスのクラス名

ホームインターフェイス

home

ホームインターフェイスのインターフェイス名

リモートインターフェイス

remote

リモートインターフェイスのインターフェイス名

セションBeanの種類

session-type

ステートフルの場合はStateful、ステートレスの場合はStateless。

トランザクションの管理方法

transaction-type

Bean管理のトランザクション区切り(Bean-managed transaction demarcation)の場合はBean、コンテナ管理のトランザクション区切り(Container-managed transaction demarcation)の場合はContainer。

以下にデプロイメント記述の例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
                         "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
        <enterprise-beans>
                <session>
                        <display-name>OfficeEJB</display-name>
                        <ejb-name>OfficeEJB</ejb-name>
                        <home>ejboffice.ejb.OfficeEJBHome</home>
                        <remote>ejboffice.ejb.OfficeEJBRemote</remote>
                        <ejb-class>ejboffice.ejb.OfficeEJB</ejb-class>
                        <session-type>Stateful</session-type>
                        <transaction-type>Container</transaction-type>
                </session>
        </enterprise-beans>
        <assembly-descriptor>
                <container-transaction>
                        <method>
                                <ejb-name>OfficeEJB</ejb-name>
                                <method-name>*</method-name>
                        </method>
                        <trans-attribute>NotSupported</trans-attribute>
                </container-transaction>
        </assembly-descriptor>
</ejb-jar>

20.2.1.4 ejb-jarファイル

ejb-jarファイルは、EJBに必要なファイルを格納したJARファイルです。ejb-jarファイルには以下のファイルを格納します。

設定ファイルフォルダはセションBeanクラス名から次のように決まります。

/[パッケージ階層]/[クラス名]_inf 

ここで、[パッケージ階層]はセションBeanクラスのパッケージに沿ったフォルダ階層、[クラス名]はセションBeanクラスのクラス名です。例えば、セションBeanクラスがejboffice.ejb.OfficeEJBなら、設定ファイルフォルダは/ejboffice/ejb/OfficeEJB_infとなります。

初期化パラメタuji.infoPathによって、設定ファイルフォルダを変更することも可能です。