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

|
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