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メソッドを発行してください。
目次
索引
![]() ![]() |