Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編)
目次 索引 前ページ次ページ

第5章 Interstageの特徴的な機能> 5.3 セション情報管理機能を使用したトランザクションアプリケーションの作成> 5.3.3 セション情報管理の事象通知リスナオブジェクト

5.3.3.1 プログラミングの流れ

(1) CORBAサービスの初期

 CORBAサーバアプリケーションとして作成する必要があります。そのため、最初に、CORBAサービスの初期化が必要です。

注意事項

 プログラミング言語がC言語またはC++言語の場合、CORBAサービスの初期化直後に次の関数を発行する必要があります。

セションIDの場合
ISTD_SMO_LISTENER2_init();
クライアント識別子の場合
ISTD_SMO_LISTENER_init();

(2) 事象通知リスナ実装関数の作

 SMOからの事象通知を受け取るために、以下に示すインタフェース実装関数名およびパラメタ形式でSMO_LISTENERインタフェース(クライアント識別子の場合)またはSMO_LISTENER2インタフェース(セションIDの場合)のtimeout()オペレーションを実装する必要があります。各プログラミング言語での実装形式を示します。
 なお、事象通知のデータ形式については、“IDL”を参照してください。

セションIDを使用する場合

C言語

        
        void
        ISTD_SMO_LISTENER2_timeout(
            CORBA_Object                        obj,
            ISTD_SMO_LISTENER2_DelSlotInfo      *slot,
            CORBA_Environment                   *env
            )
        {

            事象通知に対する処理を記述してください。

        }

C++言語

     
          void
          ISTD_SMO_LISTENER2_impl::timeout(
              const ISTD::SMO_LISTENER2::DelSlotInfo      &slot,
              CORBA::Environment                          &env  )
              throw( CORBA::Exception )
          {

              事象通知に対する処理を記述してください。

          }

COBOL


IDENTIFICATION DIVISION. PROGRAM-ID. "ISTD-SMO-LISTENER2-TIMEOUT". ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. ARGUMENT-NUMBER IS ARG-C ARGUMENT-VALUE IS ARG-V SYMBOLIC CONSTANT COPY SYMBOL-CONST IN CORBA. . DATA DIVISION. WORKING-STORAGE SECTION. COPY CONST IN CORBA. LINKAGE SECTION. 01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ. 01 DATA-P USAGE POINTER. 01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. PROCEDURE DIVISION USING OBJ DATA-P ENV. MAIN. 事象通知に対する処理を記述してください。 MAIN-END. END PROGRAM "ISTD-SMO-LISTENER2-TIMEOUT".

クライアント識別子を使用する場合

C言語

        
        void
        ISTD_SMO_LISTENER_timeout(
            CORBA_Object                       obj,
            ISTD_SMO_LISTENER_DelSlotInfo      *slot,
            CORBA_Environment                  *env
            )
        {

            事象通知に対する処理を記述してください。

        }

C++言語

          
          void
          ISTD_SMO_LISTENER_impl::timeout(
              const ISTD::SMO_LISTENER::DelSlotInfo       &slot,
              CORBA::Environment                          &env  )
              throw( CORBA::Exception )
          {

              事象通知に対する処理を記述してください。

          }

COBOL


IDENTIFICATION DIVISION. PROGRAM-ID. "ISTD-SMO-LISTENER-TIMEOUT". ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. ARGUMENT-NUMBER IS ARG-C ARGUMENT-VALUE IS ARG-V SYMBOLIC CONSTANT COPY SYMBOL-CONST IN CORBA. . DATA DIVISION. WORKING-STORAGE SECTION. COPY CONST IN CORBA. LINKAGE SECTION. 01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ. 01 DATA-P USAGE POINTER. 01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. PROCEDURE DIVISION USING OBJ DATA-P ENV. MAIN. 事象通知に対する処理を記述してください。 MAIN-END. END PROGRAM "ISTD-SMO-LISTENER-TIMEOUT".

(3) 事象通知リスナの登

 SMOから事象通知を受け取るためには、事象通知を受け取るリスナアプリケーションのオブジェクトリファレンスを、SMOに登録する必要があります。リスナアプリケーションの登録は、SMOのadd_listener()オペレーション(クライアント識別子の場合)またはadd_listener2()オペレーション(セションIDの場合)を使用して行います。
 各プログラミング言語での使用方法を以下に示します。

セションIDを使用する場合

C言語

           CORBA_Environment       CoENV;
           CORBA_Object            CoOBJ;    /* SMO の OR          */
           CORBA_Object            LiOBJ;    /* リスナ の OR       */

           ISTD_SMO_add_listener2( CoOBJ,
                                   LiOBJ,
                                   &CoEnv );

C++言語

           CORBA::Environment_ptr  env;
           ISTD::SMO_ptr           smo;           // SMO の OR
           CORBA::Object*          obj_listener;  // リスナ の OR

           smo->add_listener2(  obj_listener,
                                *env);

COBOL

         WORKING-STORAGE SECTION.
          COPY CONST IN CORBA.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY COOBJ.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY LSNOBJ.
           01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY COENV.

         PROCEDURE DIVISION USING
         MAIN.

             CALL "ISTD-SMO-ADD-LISTENER2" USING
               COOBJ
               LSNOBJ
               COENV.

クライアント識別子を使用する場合

C言語

           CORBA_Environment       CoENV;
           CORBA_Object            CoOBJ;    /* SMO の OR          */
           CORBA_Object            LiOBJ;    /* リスナ の OR       */

           ISTD_SMO_add_listener( CoOBJ,
                                  LiOBJ,
                                  &CoEnv );

C++言語

           CORBA::Environment_ptr  env;
           ISTD::SMO_ptr           smo;           // SMO の OR
           CORBA::Object*          obj_listener;  // リスナ の OR

           smo->add_listener(  obj_listener,
                               *env);

COBOL

         WORKING-STORAGE SECTION.
          COPY CONST IN CORBA.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY COOBJ.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY LSNOBJ.

           01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY COENV.

         PROCEDURE DIVISION USING
         MAIN.

             CALL "ISTD-SMO-ADD-LISTENER" USING
               COOBJ
               LSNOBJ
               COENV.

(4) 事象通知リスナの登録抹

 SMOからの事象通知受け取りを停止する場合、SMOに登録したリスナアプリケーションのオブジェクトリファレンスの登録抹消を行う必要があります。リスナアプリケーションの登録抹消はSMOのdel_listener()オペレーション(クライアント識別子の場合)またはdel_listener2()オペレーション(セションIDの場合)を使用して行います。 

 各プログラミング言語での使用方法を以下に示します。

セションIDを使用する場合

C言語


CORBA_Environment CoENV; CORBA_Object CoOBJ; /* SMO の OR */ CORBA_Object LiOBJ; /* リスナ の OR */ ISTD_SMO_del_listener2( CoOBJ, LiOBJ, &CoEnv );

C++言語

           CORBA::Environment_ptr  env;
           ISTD::SMO_ptr           smo;           // SMO の OR
           CORBA::Object*          obj_listener;  // リスナ の OR

           smo->del_listener2(  obj_listener,
                                *env);

COBOL

         WORKING-STORAGE SECTION.
          COPY CONST IN CORBA.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY COOBJ.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY LSNOBJ.
           01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY COENV.

         PROCEDURE DIVISION USING
         MAIN.

             CALL "ISTD-SMO-DEL-LISTENER2" USING
               COOBJ
               LSNOBJ
               COENV.

クライアント識別子を使用する場合

C言語


CORBA_Environment CoENV; CORBA_Object CoOBJ; /* SMO の OR */ CORBA_Object LiOBJ; /* リスナ の OR */ ISTD_SMO_del_listener( CoOBJ, LiOBJ, &CoEnv );

C++言語

           CORBA::Environment_ptr  env;
           ISTD::SMO_ptr           smo;           // SMO の OR
           CORBA::Object*          obj_listener;  // リスナ の OR

           smo->del_listener(  obj_listener,
                               *env);

COBOL

         WORKING-STORAGE SECTION.
          COPY CONST IN CORBA.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY COOBJ.
           01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY LSNOBJ.
           01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY COENV.

         PROCEDURE DIVISION USING
         MAIN.

             CALL "ISTD-SMO-DEL-LISTENER" USING
               COOBJ
               LSNOBJ
               COENV.

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

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