Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次 索引 |
第3部 EJB編 | > 第15章 EJBアプリケーションの呼出し方法 | > 15.1 Session Beanの呼出し方法 |
以下は、Session Beanを呼び出すクライアントアプリケーションの記述例です。
-------------------------------------------------------------------------------- SampleClient.java package Sample; import javax.ejb.*; import java.rmi.*; import java.util.*; import com.fujitsu.interstage.ejb.jndi.*; class SampleClient { public static void main(String args[]){ SampleHome h = null; SampleRemote r = null; // lookupの処理を行います try{ // InitialContext獲得 // デフォルトコンストラクタ指定で獲得する(注1) javax.naming.Context ic = new javax.naming.InitialContext(); // lookup (1) java.lang.Object Obj = (java.lang.Object)ic.lookup("SampleBean"); /* Enterprise Beanオブジェクトのlookup処理を行います */ // homeのnarrow() (2) h = (SampleHome)javax.rmi.PortableRemoteObject.narrow(Obj, SampleHome.class); }catch (Exception e){ System.err.println("lookup Failed"); e.printStackTrace(); System.exit(1); } // create try{ /* EJBアプリケーションのcreate処理を行います */ r = (SampleRemote)h.create("create sample"); }catch (CreateException e){ System.err.println("CreateException Catched"); e.printStackTrace(); System.exit(1); }catch (RemoteException e){ System.err.println("RemoteException Catched"); e.printStackTrace(); System.exit(1); }catch (Exception e){ System.err.println("create Failed"); e.printStackTrace(); System.exit(1); } // invoke business method try{ int ret; /* ビジネスメソッドの処理を行います */ ret = r.business1(1,2); System.out.println(ret); ret = r.business2(2,8); System.out.println(ret); }catch (RemoteException e){ System.err.println("RemoteException Catched"); e.printStackTrace(); System.exit(1); }catch (Exception e){ System.err.println("business method Failed"); e.printStackTrace(); try{ r.remove(); }catch (Exception ex){ System.err.println("remove Failed"); ex.printStackTrace(); } System.exit(1); } // remove try{ /* EJBアプリケーションのremove処理を行います */ r.remove(); }catch (RemoveException e){ System.err.println("RemoveException Catched"); e.printStackTrace(); System.exit(1); }catch (RemoteException e){ System.err.println("RemoteException Catched"); e.printStackTrace(); System.exit(1); }catch (Exception e){ System.err.println("remove Failed"); e.printStackTrace(); System.exit(1); } } } --------------------------------------------------------------------------------
EJBクライアントを使用してクライアントアプリケーションを起動する際に、以下の環境プロパティを指定し起動してください。J2EEアプリケーションクライアントと、サーブレット/JSPが提供する各機能を使用する場合には、“JNDIサービスプロバイダの環境設定”を参照してください。
-Djava.naming.factory.initial=com.fujitsu.interstage.ejb.jndi.FJCNCtxFactoryForClient
java -Djava.naming.factory.initial=com.fujitsu.interstage.ejb.jndi.FJCNCtxFactoryForClient Javaアプリケーション名
記述例はHomeインタフェースの例ですが、LocalHomeインタフェースを経由してSession Beanにアクセスする場合には、記述例の(1)と(2)の処理が異なります。
以下のようにlookupで取得したオブジェクトを直接キャストして、narrowメソッドを実行する必要はありません。
-------------------------------------------------------------------------------- Context initialContext = new InitialContext(); CartHome cartHome = (CartHome)initialContext.lookup("java:comp/env/ejb/cart"); --------------------------------------------------------------------------------
目次 索引 |