セション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のビジネスクラスに特有の事項を説明します。
メソッドの返り値の型はObjectにします。セションBeanからクライアントに返すオブジェクトをメソッドのreturn文で指定します。
クライアントからビジネスクラスが受け取るオブジェクトと、ビジネスクラスが返すオブジェクトはRMI over IIOPの規約に従っている必要があります。この規約については“24.3.6 EJBの引数や返却値として使用可能なオブジェクト”を参照してください。
コマンドマップ
コマンドマップには、クライアントから受信したデータに応じて、どのビジネスクラスのメソッドを呼び出すのかを記述します。以下は記述例です。
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 コマンドマップ”を参照してください。
セションクラス
セションクラスはセションを通して使われるデータを保持するためのクラスです。セションクラスに記憶させたデータは、ビジネスクラスの実行終了後でもセションBeanのオブジェクトが存在する限り保持されます。アプリケーション独自の情報をセションクラスに記憶させたい場合は、ユーザ定義のセションクラスを使用してください。ユーザ定義のセションクラスの作成方法は“3.3 セションクラス”を参照してください。
アプリケーションクラス
アプリケーションクラスは同一のJVMで動作するセションBeanのオブジェクトで共有されるデータを保持します。アプリケーションクラスに記憶させたデータは、他のセションBeanオブジェクトからも参照されます。アプリケーション独自の情報をアプリケーションクラスに記憶させたい場合は、ユーザ定義のアプリケーションクラスを使用してください。ユーザ定義のアプリケーションクラスの作成方法は、“3.4 アプリケーションクラス”を参照してください。
ファクトリクラス
ファクトリクラスはアプリケーションクラスやセションクラスのインスタンスを作成するクラスです。ユーザ定義のアプリケーションクラスやセションクラスを使用する場合は、ユーザ定義のファクトリクラスを作成し、そのクラス名を初期化パラメタで指定する必要があります。ファクトリクラスの作成方法は、“3.5 ファクトリクラス”を参照してください。初期化パラメタの設定方法は“24.1.2 セションBeanの初期化パラメタの設定”を参照してください。