| Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]()
|
| 第8章 アプリケーションの開発(COBOL) |
COBOLでのPushモデルのアプリケーションの開発について説明します。

Linuxシステムでは、COBOLはWindows(R)クライアントだけで使用可能であるため、Pushモデルを使用できません。
サプライヤがコンシューマにイベントデータを送信する場合、イベントチャネル上のCOSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSHメソッドを呼び出します。イベントチャネルはユーザがコンシューマ上に実装したSERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを呼び出します。その概要を以下に示します。

サプライヤからイベントチャネルへイベントデータを送信する手続き例と処理の流れを以下に説明します。
[COBOLによるPushモデルのサプライヤ]
PROGRAM-ID. "FUNC".
...
CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-SUPPLIERS" USING
EVENTCHOBJ
ENV
SUPPLIER. /* 1 */
CALL "COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PUSH-CONSUMER" USING
SUPPLIER
ENV
PROXYPUSH. /* 2 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER" USING
PROXYPUSH
PROXYPUSH
ENV. /* 3 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH" USING
PROXYPUSH
EVDATA
ENV. /* 4 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-DISCONNECT-PUSH-CONSU" USING
PROXYPUSH
ENV. /* 5 */
...
END PROGRAM "FUNC".
サプライヤからイベントデータを送信するには下記のメソッドを使用します。引数のEVDATAにイベントデータを指定して送信します。このCOSEVENTCHANNELADMIN-PROXYPUSHCONSUMERはCOSEVENTCOMM-PUSHCONSUMERを継承しています。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN COSEVENTCOMM.
01 COPY PUSHCONSUMER IN COSEVENTCOMM REPLACING
COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER BY OBJ.
COPY CONST IN CORBA.
01 COPY ANY IN CORBA REPLACING CORBA-ANY BY EVDATA.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
PROCEDURE DIVISION.
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH" USING
OBJ
EVDATA
ENV.
コンシューマはイベントチャネルから送信されるイベントデータを受け取るために、SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを実装します。イベントチャネルはコンシューマ上の、SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSHメソッドを呼び出し、コンシューマにイベントデータを送信します。コンシューマがイベントデータを受け取る例と処理の流れを以下に説明します。
[COBOLによるPushモデルのコンシューマ]
PROGRAM-ID. "FUNC".
...
CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-CONSUMERS" USING
EVENTCHOBJ
ENV
CONSUMER. /* 1 */
CALL "COSEVENTCHANNELADMIN-CONSUMERADMIN-OBTAIN-PUSH-SUPPLIER" USING
CONSUMER
ENV
PROXYPUSH. /* 2 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-CONNECT-PUSH-CONSUMER" USING
PROXYPUSH
MY-OBJ
ENV. /* 3 */
...
END PROGRAM "FUNC".
PROGRAM-ID. "SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSH". /* 4 */
...
LINKAGE SECTION.
01 COPY PROXYPUSHCONSUMER IN COSEVENTCOMM REPLACING COSEVENTCHANNELADMIN-PROXYP003
BY OBJ.
01 COPY ANY IN CORBA REPLACING CORBA-ANY BY EVDATA.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
PROCEDURE DIVISION USING
OBJ
EVDATA
ENV.
...
/* アプリケーションの処理 */
...
EXIT PROGRAM.
END PROGRAM "SERVER-COSEVENTCOMM-PUSHCONSUMER-PUSH".

コンシューマ側のアプリケーションでイベントチャネルに対してCOSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-DISCONNECT-PUSH_SUPPLIERメソッドを発行しないで、アプリケーションを終了させ、その後、同一のアプリケーションを再起動した場合、同一イベントデータが複数個配信されます。コンシューマアプリケーションを終了する場合は、必ずイベントチャネルに対してCOSEVENTCHANNELADMIN-PROXYPUSHSUPPLIER-DISCONNECT-PUSH_SUPPLIERメソッドを発行してください。
目次
索引
![]()
|