Apcoordinator ユーザーズガイド |
目次
![]() ![]() |
第4部 EJBアプリケーションの開発 | > 第25章 セションBeanの開発 | > 25.3 セションBeanとクライアントとの連携 |
セションBeanクラスは次のように作成して、execメソッドが発生するInvocationTargetExceptionにApcoordinatorの例外クラスが含まれないようにします。
このように作成したセションBeanをApcoordinatorアプリケーションから呼び出す場合、 セションBean内で例外が発生した際にクライアントに通知されるのはexecメソッドで作成した例外(上記の例ではExceptionクラス)になります。セションBeanのビジネスクラスで発生した例外ではありません。
import com.fujitsu.uji.ejb.bean.UjiSessionBean; import java.lang.reflect.InvocationTargetException; public class OfficeEJB extends UjiSessionBean { public Object[] exec(Object dataBean, String verb, Object syncData) throws InvocationTargetException { try { return super.exec(dataBean,verb,syncData); } catch (InvocationTargetException e) { Throwable rootCause=e.getTargetException(); Exception replaced=new Exception(rootCause.getMessage()); throw new InvocationTargetException(replaced); } } }
クライアントのプログラムではセションBeanを以下の手順で呼び出します。
以下はセションBeanを呼び出す例です。ホームインタフェースをSimpleBeanHome、リモートインタフェースをSimpleBeanRemoteとしています。
上記の方法でセションBeanを呼び出すEJBクライアントには、実行時ライブラリとしてujiejbcl.jarが必要です。このファイルをEJBクライアントの実行環境にコピーし、クラスパスに追加してください。 ujiejbcl.jarは、Apcoordinatorをインストールすることにより、[Apcoordinatorのインストールフォルダ]\redist\ejb にインストールされます。
import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; ... HashMap syncData=new HashMap(); // セションBeanのセションクラスとの間で転送されるオブジェクト syncData.put("userId","abc1234"); ... // ホームインタフェース取得 InitialContext ctx=new InitialContext(); SimpleBeanHome home=(SimpleBeanHome)PortableRemoteObject.narrow( ctx.lookup("java:comp/env/ejb/SimpleBean"),SimpleBeanHome.class); // リモートインタフェース取得 SimpleBeanRemote remote=home.create(); // セションBean呼び出し MessageBean bean=new MessageBean(); bean.setMessage("Hello!"); Object[] replyArray=remote.exec(bean,"echo",syncData); // 返却値の取得 MessageBean reply=(MessageBean)replyArray[0]; syncData=(HashMap)replyArray[1];
ujiejbcl.jarにより、以下を利用するのに必要なクラスが提供されます。
目次
![]() ![]() |