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

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

15.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");
--------------------------------------------------------------------------------

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

Copyright 2008 FUJITSU LIMITED