Cosminexus 機能解説
EJBクライアントアプリケーションからEnterprise Beanを呼び出すには,JNDIを利用します。ここでは,EJBホームオブジェクトのリファレンスをルックアップする場合,およびビジネスインタフェースのリファレンスをルックアップする場合に分けて,Enterprise Beanを呼び出す方法を説明します。
EJBホームオブジェクトのリファレンスをルックアップしてEnterprise Beanを呼び出す方法を,実装例を基に説明します。
EJBホームオブジェクトのリファレンスのルックアップに利用するJNDIネーミングコンテキストを生成します。
javax.naming.Context ctx = new javax.naming.InitialContext(); |
生成したJNDIネーミングコンテキストを利用して,EJBホームオブジェクトのリファレンスを取得します。EJBホームオブジェクトのリファレンスを取得するには,自動的にバインドされる名称またはユーザ指定名前空間機能を利用して付与した名称でルックアップします。次の例では,ユーザ指定名前空間を利用してルックアップ,取得しています。ルックアップの方法については,「6.3 JNDIによるEJBホームオブジェクトおよびビジネスインタフェースのリファレンスのルックアップ」を参照してください。
String ejbName = "MySample"; java.lang.Object obj = ctx.lookup(ejbName); SampleHome sampleHome = (SampleHome)javax.rmi.PortableRemoteObject.narrow(obj, SampleHome.class); |
EJBホームオブジェクトのcreateメソッドによって,Enterprise Beanのインスタンスを生成します。これによって,アプリケーションに必要となるEnterprise Beanのメソッドを呼び出せるようになります。
Sample remoteSample = sampleHome.create(); //Enterprise Beanインスタンスの生成 String result = remoteSample.getData("data"); //ビジネスメソッドの呼び出し |
なお,Entity BeanでCollection型が返されるfindメソッドを利用する場合は,コレクションから取り出したオブジェクトに対して,Enterprise Beanのクラスでナロウする必要があります。
Collection c = home.findByXXX(keyValue); Iterator i=c.iterator(); while (i.hasNext()) { Sample remoteSample=(Sample)javax.rmi.PortableRemoteObject.narrow(i.next(), Sample.class); //RemoteSampleに対してビジネスメソッドを呼び出します。 } |
ビジネスインタフェースのリファレンスをルックアップしてEnterprise Beanを呼び出す方法を,実装例を基に説明します。
ビジネスインタフェースを使用してEnterprise Beanを呼び出すには,最初にInitialContextを生成します。
// InitialContextを生成 InitialContext ctx = new InitialContext(); |
生成したInitialContextを利用して,ビジネスインタフェースのリファレンスを取得します。ビジネスインタフェースのリファレンスを取得するには,自動的にバインドされる名称またはユーザ指定名前空間機能を利用して付与した名称でルックアップします。自動的にバインドされる名称を使用したビジネスインタフェースのルックアップの方法については,「6.3.1(2) ビジネスインタフェースの場合」を参照してください。
// ビジネスインタフェースのリファレンスを取得 Sample sample = (Sample)ctx.lookup("HITACHI_EJB/SERVERS/MyServer/EJBBI/SampleApp/Sample"); |
ビジネスインタフェースのリファレンスを取得したことで,ビジネスメソッドを呼び出せるようになります。
// ビジネスメソッドの呼び出し String result = sample.getData("data"); |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.