3.10 MCFイベント
メッセージ送受信形態の通信をする場合,OpenTP1の各種システム情報をMHPに知らせるために,MCFからメッセージを出力します。これをMCFイベントといいます。メッセージ送受信の処理でエラーや障害が起こった場合,システム内で何が起こっているのかがMCFイベントの内容でわかります。MCFイベントには,エラーや障害発生などのエラーイベントと,コネクションの確立・解放などプロトコルに依存する通信イベントの2種類があります。
MCFイベントの内容を基に障害の対処をするMHPをMCFイベント処理用MHPといいます。このMHPを作成しておくと,独自の障害回復処理などができます。
MCFイベントは入力キューに渡されて,MCFイベント処理用MHPが起動されます。このとき,入力メッセージの編集とアプリケーション名決定UOCは経由しません。また,MCFイベントに対して障害が起こったことによって,MCFイベントが起動されることはありません。
MCFイベントの一覧を次の表に示します。次の表に示すMCFイベント以外にも,通信プロトコル対応製品で固有なMCFイベントが通知される場合があります。通信プロトコル対応製品で固有なMCFイベントについては,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
表3‒13 MCFイベントの一覧
MCFイベント名
|
MCFイベントコード
|
MCFイベントが通知された原因
|
MCFイベント処理用
MHPで実行する処理の例
|
不正アプリケーション名検出通知イベント
|
ERREVT1
|
メッセージのアプリケーション名がMCFアプリケーション定義にありません。
|
該当するアプリケーション名がなかったことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
|
メッセージ廃棄通知イベント
|
ERREVT2
|
次に示す理由で,MCFで受信した入力キューのメッセージ,またはアプリケーションの即時起動によって入力キューに入力されたメッセージを廃棄しました。
-
入力キューに障害が発生しました。
-
入力メッセージ最大格納数を超過しました。
-
動的共用メモリが不足しました。
-
キューファイルが満杯になりました。
-
MHPのサービス,サービスグループ,またはアプリケーションが閉塞しています。
-
スケジュール閉塞されているサービスグループの入力キューに未処理受信メッセージが残った状態で,OpenTP1を正常終了または計画停止Aで終了しました。
-
MHPのサービスグループ,またはアプリケーションがセキュア状態です。
-
MHPで呼び出すdc_mcf_receive関数にセグメントを渡す前に,MHPが異常終了しました。
-
アプリケーション名に相当するMHPのサービスがありません。
-
ユーザサーバ未起動などによって,MHPの起動に失敗しました。
-
DBMSの障害などによって,トランザクションの開始に失敗しました。
|
メッセージを廃棄したことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
|
UAP異常終了通知イベント
|
ERREVT3
|
MHPで呼び出すdc_mcf_receive関数にセグメントを渡したあとで,MHPが異常終了,またはロールバック※しました。
|
UAPが異常終了,またはロールバックしたことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
|
タイマ起動メッセージ廃棄通知イベント
|
ERREVT4
|
タイマ起動のアプリケーション起動によって入力キューに入力されたメッセージをERREVT2に示す理由で廃棄しました。
|
メッセージを廃棄したことを知らせます。
受信したメッセージが問い合わせメッセージの場合は,応答メッセージを送信できます。
|
未処理送信メッセージ廃棄通知イベント
|
ERREVTA
|
次に示す理由で,UAPから送信した未処理送信メッセージを廃棄しました。
-
MCFの正常終了処理時に,未処理送信メッセージの滞留時間監視の時間切れ(タイムアウト)が起こりました。
-
mcftdlqleコマンドまたはdc_mcf_tdlqle関数で,出力キューが削除されました。
-
タイマ起動要求や閉塞されている論理端末の出力キューに未処理送信メッセージが残った状態で,dcstopコマンドが実行されました。
|
未処理送信メッセージを廃棄したことを知らせます。
受信した未処理送信メッセージは,任意のファイルへ退避します。
|
送信障害通知イベント
|
SERREVT
|
メッセージを送信する途中で,通信プロトコルの障害が起こりました。
|
通信プロトコルの障害でメッセージを送信できなかったことを知らせます。
|
送信完了通知イベント
|
SCMPEVT
|
相手システムへ,メッセージを正常に送信できました。
|
相手システムまでメッセージを正常に送信できたことを知らせます。
|
障害通知イベント
|
CERREVT
(VERREVT)
|
通信管理プログラムで,コネクション障害,または論理端末障害が起こりました。コネクション確立再試行を定義している場合は,通知されません。
|
コネクション,または論理端末に障害が起こったことを知らせます。
|
状態通知イベント
|
COPNEVT
(VOPNEVT)
|
コネクションが確立しました。
|
メッセージを送受信できることを知らせます。
|
CCLSEVT
(VCLSEVT)
|
コネクションが正常に解放されました。
|
メッセージを送受信できないことを知らせます。
|
- 注
-
ERREVT1,ERREVT2,ERREVT3,ERREVT4,ERREVTAはエラーイベントを示します。
SERREVT,SCMPEVT,CERREVT,COPNEVT,CCLSEVTは通信イベントを示します。
- 注※
-
MCFアプリケーション定義(mcfaalcap -g)のrecvmsgオペランドにrを指定した場合,またはdc_mcf_rollback関数のactionにDCMCFRTRYもしくはDCMCFRRTNを指定した場合は除きます。
-
MCFイベント処理用MHPのアプリケーションの型
MCFイベント処理用MHPのアプリケーションの型は,MCFイベントが通知された原因で決まります。MCFイベント処理用MHPでは,決められたアプリケーションの型に応じた処理をしてください。
ERREVT1,ERREVT2,およびERREVT3のMCFイベント処理用MHPを起動する場合には,アプリケーション起動プロセスが必要となります。アプリケーション起動プロセスを使う場合は,MCF通信構成定義を作成しておいてください。
dc_mcf_execap関数で複数のMHPを起動させた場合にMCFイベントが通知されたときは,最初にdc_mcf_execap関数を呼び出したMHPの型を基に,MCFイベント処理用MHPの型が決定されます。SPPからdc_mcf_execap関数を呼び出した場合は,アプリケーション起動プロセスに対応するMCFイベントが通知されます。
MCFイベント処理用MHPとアプリケーションの型の関係を次の表に示します。
表3‒14 MCFイベント処理用MHPとアプリケーションの型の関係
MCFイベント処理用MHPを起動したMCFイベントのイベントコード
|
MCFイベント処理用MHPのアプリケーションの型
|
ERREVT1
|
要求元となった論理端末の端末タイプの型に応じて設定されます。
-
reply型論理端末の場合:ans
-
reply型以外の論理端末の場合:noans
|
ERREVT2
|
MCFイベントが通知される原因となった,MHPのアプリケーションの型をそのまま引き継ぎます。※
|
ERREVT3
|
ERREVT4
|
ERREVTA
|
非応答型(noans)が設定されます。
|
SERREVT
|
SCMPEVT
|
CERREVT
|
VERREVT
|
COPNEVT
|
VOPNEVT
|
CCLSEVT
|
VCLSEVT
|
- 注※
-
非トランザクション属性のMHPの場合は,異常終了したあとでもアプリケーションの型を引き継がないで,MCFイベント処理用MHPの指定に従います。
-
通信プロトコル対応製品と,通知されるMCFイベントの関係
通信プロトコル対応製品と,通知されるMCFイベントの関係を以降の表に示します。
表3‒15 通信プロトコル対応製品と通知されるMCFイベントの関係1
MCFイベント
|
通信プロトコル対応製品
|
TP1/NET/OSAS−NIF
|
TP1/NET/OSI-TP
|
TP1/NET/SLU-TypeP2
|
TP1/NET/TCP/IP
|
ERREVT1
|
○
|
○
|
○
|
○
|
ERREVT2
|
○
|
○
|
○
|
○
|
ERREVT3
|
○
|
○
|
○
|
○
|
ERREVT4
|
×
|
○
|
○
|
○
|
ERREVTA
|
○
|
○
|
○
|
○
|
SERREVT
|
×
|
×
|
×
|
×
|
SCMPEVT
|
×
|
×
|
×
|
○
|
CERREVT
|
○
|
○
|
○
|
○
|
COPNEVT
|
○
|
○
|
○
|
○
|
CCLSEVT
|
○
|
○
|
○
|
○
|
VERREVT
|
×
|
×
|
×
|
×
|
VOPNEVT
|
×
|
×
|
×
|
×
|
VCLSEVT
|
×
|
×
|
×
|
×
|
- (凡例)
-
○:該当する通信プロトコル対応製品で通知されます。
×:該当する通信プロトコル対応製品では通知されません。
表3‒16 通信プロトコル対応製品と通知されるMCFイベントの関係2
MCFイベント
|
通信プロトコル対応製品
|
TP1/NET/User Agent
|
TP1/NET/UDP
|
TP1/NET/XMAP3
|
ERREVT1
|
○
|
○
|
○
|
ERREVT2
|
○
|
○
|
○
|
ERREVT3
|
○
|
○
|
○
|
ERREVT4
|
○
|
○
|
○
|
ERREVTA
|
○
|
○
|
○
|
SERREVT
|
×
|
×
|
○※
|
SCMPEVT
|
×
|
×
|
○※
|
CERREVT
|
○
|
○
|
×
|
COPNEVT
|
○
|
○
|
×
|
CCLSEVT
|
○
|
○
|
×
|
VERREVT
|
×
|
×
|
○
|
VOPNEVT
|
×
|
×
|
○
|
VCLSEVT
|
×
|
×
|
○
|
- (凡例)
-
○:該当する通信プロトコル対応製品で通知されます。
×:該当する通信プロトコル対応製品では通知されません。
- 注※
-
SERREVT,SCMPEVTが通知されるのは,印刷機能を使用する場合だけです。
- 〈この節の構成〉
-
ページの先頭へ