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

33.2.1 セションBeanの作成方法

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

33.2.1.1.1 ビジネスインタフェース

ビジネスインタフェースの作成方法は以下のとおりです。

  1. 以下のインタフェースを継承します。メソッドを追加する必要はありません。

    • ステートレスセションBeanの場合: com.fujitsu.uji.ejb.UjiSimpleStateless

    • ステートフルセションBeanの場合: com.fujitsu.uji.ejb.UjiSimpleStateful

  2. ビジネスインタフェースを以下のどちらで使用するかを指定します。

    • ローカルビジネスインタフェース
      クライアントとセションBeanが同一のJavaVMで動作している場合のみ利用できます。

    • リモートビジネスインタフェース
      クライアントとセションBeanが動作しているJavaVMが同一の場合でも別の場合でも利用できます。

  3. ビジネスインタフェースに以下のアノテーションをつけることによって指定します。

    • ローカルビジネスインタフェースの場合: @Local

    • リモートビジネスインタフェースの場合: @Remote

以下は、リモートビジネスインタフェースの記述例です。

package ejboffice.ejb;

import javax.ejb.Remote;
import com.fujitsu.uji.ejb.UjiSimpleStateful;

@Remote
public interface Office extends UjiSimpleStateful {
}

注意

  • ビジネスインタフェースはアプリケーションごとに作成する必要があります。複数のアプリケーションで同一のビジネスインタフェースは使用できません。

  • 同一のインタフェースをリモートビジネスインタフェースとローカルビジネスインタフェースの両方として使用することはできません。

  • ビジネスインタフェースでjava.rmi.Remoteを継承しないでください。

  • リモートビジネスインタフェースを利用した場合、セションBeanの引数と返却値は値渡しとなります。ローカルビジネスインタフェースを利用した場合は参照渡しとなります。両者の違いについては33.2.6 値渡しと参照渡しの違いを参照してください。

33.2.1.1.2 セションBeanクラス

セションBeanクラスの作成方法は以下のとおりです。

  1. 以下のクラスを継承します。

    • ステートレスセションBeanの場合: com.fujitsu.uji.ejb.bean.UjiSimpleStatelessBean

    • ステートフルセションBeanの場合: com.fujitsu.uji.ejb.bean.UjiSimpleStatefulBean

  2. セションBeanクラスに以下のアノテーションを付けます。

    • ステートレスセションBeanの場合: @Stateless

    • ステートフルセションBeanの場合: @Stateful

  3. implements節にビジネスインタフェースを指定します。

  4. Apcoordinatorの初期化パラメタをセションBeanクラスで指定する場合は、getInitParametersメソッドを実装します。デプロイメント記述で指定する場合は、getInitParametersメソッドは不要です。詳細は、33.2.2 セションBeanの初期化パラメタの設定を参照してください。

以下は、ステートフルセションBeanの記述例です。

package ejboffice.ejb;

import java.util.Properties;
import javax.ejb.Stateful;
import com.fujitsu.uji.ejb.bean.UjiSimpleStatefulBean;

@Stateful
public class OfficeBean extends UjiSimpleStatefulBean implements Office {
    protected Properties getInitParameters() {
        Properties p=new Properties();
        p.setProperty("uji.infoPath", "/ejboffice/ejb/OfficeBean_inf");
        return p;
    }
}

注意

セションBeanクラスとビジネスインタフェースで、セションBeanの種別(ステートフルかステートレスか)を一致させる必要があります。

33.2.1.1.3 ビジネスクラス

ビジネスクラスには、セション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のビジネスクラスに特有の事項を説明します。

33.2.1.1.4 コマンドマップ

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

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行目の意味は以下のとおりです。

クライアントから受信したデータBeanがejboffice.ViewBeanクラスで、受信したコマンド名がgetAreaなら、ビジネスクラスejboffice.ejb.OfficeHandlerのgetAreaメソッドを呼び出します。

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

33.2.1.1.5 セションクラス

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

33.2.1.1.6 アプリケーションクラス

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

33.2.1.1.7 ファクトリクラス

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