10.4.3 インスタンスを生成する

同期受付(SessionBean)のメソッドを呼び出すために,取得したスタブを使用して,Enterprise Beanのインスタンスを生成します。Enterprise Beanのインスタンスを生成する手順を次に示します。

  1. EJBホームオブジェクトのリファレンスの検索に利用するJNDIネーミングコンテキストを生成します。
    (例)

    javax.naming.Context ctx = new javax.naming.InitialContext();

  2. 生成したJNDIネーミングコンテキストを使用して,EJBホームオブジェクトのリファレンスを取得します。
    EJBホームオブジェクトのリファレンスは,ユーザ指定名前空間またはEJBコンテナ名前空間を利用して検索し,取得します。EJBホームオブジェクトのリファレンスの検索・取得の詳細については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)」の「3.4.2 Enterprise Beanを呼び出すための実装」を参照してください。
    (例)

    Object objref
        = initial.lookup("HITACHI_EJB/SERVERS/" + "<J2EEサーバ名称>"
          + "/EJB/CSCMsgSyncServiceDelivery/CSCMsgSyncServiceDeliveryEJB");

    CSCMsgSyncServiceDeliveryHome home
        = (CSCMsgSyncServiceDeliveryHome)PortableRemoteObject
           .narrow(objref, CSCMsgSyncServiceDeliveryHome.class);

  3. EJBホームオブジェクトのcreateメソッドによって,Enterprise Beanのインスタンスを生成します。生成したEnterprise Beanのインスタンスを使用して,同期受付(SessionBean)のメソッド(Enterprise beanのメソッド)を呼び出します。
    (例)要求電文がXMLの場合

    CSCMsgSyncServiceDelivery reception = home.create();
         // Enterprise Beanのインスタンスを生成
    String result = reception .invokeXML(    // メソッドの呼び出し
                  serviceName,              // サービス名
                  clientID,                 // クライアント相関ID
                  requestFormatID,          // リクエストフォーマットID
                  responseFormatID,         // レスポンスフォーマットID
                  operationName,            // オペレーション名
                  userData);                // ユーザ電文

    (例)要求電文がバイナリの場合

    CSCMsgSyncServiceDelivery reception = home.create();
         // Enterprise Beanのインスタンスを生成
    byte[] resultBinary = reception .invokeBinary(  // メソッドの呼び出し
                  serviceName,                 // サービス名
                  clientID,                    // クライアント相関ID
                  requestFormatID,             // リクエストフォーマットID
                  responseFormatID,            // レスポンスフォーマットID
                  operationName,               // オペレーション名
                  userDataBinary.length,       // メッセージ長
                  userDataBinary);             // ユーザ電文

    注意
    バイナリ電文の要求電文を送信できるのは,サービス部品側で使用している電文形式がバイナリ形式のときだけです。