Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第14章 EJBアプリケーションの呼出し方法> 14.1 Session Beanの呼出し方法

14.1.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アプリケーション名

LocalHomeインタフェースを経由した場合

 記述例はHomeインタフェースの例ですが、LocalHomeインタフェースを経由してSession Beanにアクセスする場合には、記述例の(1)(2)の処理が異なります。

 以下のようにlookupで取得したオブジェクトを直接キャストして、narrowメソッドを実行する必要はありません。

    Context initialContext = new InitialContext();
    CartHome cartHome = (CartHome)initialContext.lookup("java:comp/env/ejb/cart");

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005