Apcoordinatorで作成したセションBeanはビジネスメソッドを1個だけ持ち、そのメソッド名はexecです。 execとはトランザクション属性などが異なるビジネスメソッドが必要な場合は、次のようにしてください。
セションBeanクラスにユーザ定義のビジネスメソッドを追加する。
追加したビジネスメソッドをリモートインタフェースにも追加する。
デプロイメント記述で、execメソッドとユーザ定義ビジネスメソッドにそれぞれ別のトランザクション属性を割り当てる。
クライアントからセションBeanを呼び出すときはメソッド名を指定し、呼び出すメソッドを区別する。
ビジネスメソッドを追加したセションBeanクラスは次のように作成します。
import com.fujitsu.uji.ejb.bean.UjiSessionBean; import java.lang.reflect.InvocationTargetException; public class OfficeEJB extends UjiSessionBean { public Object[] myExec(Object dataBean, String verb, Object syncData) throws InvocationTargetException { return exec(dataBean,verb,syncData); } }
これは、ビジネスメソッドmyExecを追加した例です。メソッドの引数の型、返り値の型、throws節は上記例と同じにしてください。また、上記例と同様にexecを呼び出してその返り値を返すように作成してください。execメソッドはUjiSessionBeanクラスに定義されています。
クライアントからユーザ定義のビジネスメソッドを呼び出す時には次のようにメソッド名を指定してください。
セションBeanの呼び出しにEJBCallFactoryを使用する場合: UjiSessionCallクラスのinvokeメソッドの代わりにinvokeMethodメソッドを使用します。その第1引数にメソッド名を指定します。
UjiSessionCall call=...; call.invokeMethod("myExec",dataBean,verb);
セションBeanの呼び出しにリモート共通インタフェースを使用する場合: CallインタフェースをUjiSessionCallクラスにキャストして、前項と同じ方法で呼び出します。
Call call=...; ((UjiSessionCall)call).invokeMethod("myExec",dataBean,verb);
なお、セションBeanの基本的な呼び出し方法については、“第8章 EJBの呼び出し”を参照してください。