Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次 索引 |
第3部 EJB編 | > 第15章 EJBアプリケーションの呼出し方法 | > 15.2 Entity Beanの呼出し方法 |
以下は、Entity Beanを呼び出すクライアントアプリケーションの記述例です。
-------------------------------------------------------------------------------- SampleClient.java package sample; import javax.ejb.* ; import java.rmi.*; public class SampleClient { public static void main(String args[]){ EmployeeHome home = null; EmployeeRemote remote = null; // lookupの処理を行います try{ // InitialContext獲得 // デフォルトコンストラクタ指定で獲得する(注1) javax.naming.Context ic = new javax.naming.InitialContext(); // lookup (1) java.lang.Object Obj = (java.lang.Object)ic.lookup("Employee"); /* Enterprise Beanオブジェクトのlookup処理を行います */ // homeのnarrow() (2) home = (EmployeeHome)javax.rmi.PortableRemoteObject.narrow( Obj, EmployeeHome.class); }catch (Exception e){ System.err.println("lookup Failed"); e.printStackTrace(); System.exit(1); } // findByPrimaryKeyの呼出し try{ String ID = "100" ; EmployeePrimaryKey pk = new EmployeePrimaryKey(ID); remote = home.findByPrimaryKey(pk); }catch (FinderException e){ System.err.println("FinderException Catched"); e.printStackTrace(); System.exit(1); }catch (RemoteException e){ System.err.println("RemoteException Catched"); e.printStackTrace(); System.exit(1); } // invoke business method try{ System.out.println(remote.getID()); System.out.println(remote.getNAME()); System.out.println(remote.getDEPT()); System.out.println(remote.getAGE()); }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); } } } --------------------------------------------------------------------------------
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(); AccountHome accountHome = (AccountHome)initialContext.lookup("java:comp/env/ejb/accounts"); --------------------------------------------------------------------------------
目次 索引 |