2.9.10. TCP/IPバインディング

TCP/IP BCは、 独自プロトコルを使用しているシステムとの接続性を高めるため、また、性能にシビアなシステムでメッセージ転送性能を極限まで高めるために、 従来のBCからプロトコル処理を省きユーザが自由にプロトコル処理を組み込むために使用します。 TCP/IP BCはソケットを開き、任意のプロトコルで送受信可能なBCです。


図2.9.10-1

2.9.10.1. サービスユニットのファイル構成

TCP/IP BCのサービスユニットのフォルダ構成は下図の通りです。


図2.9.10.1-1

TCP/IP BCのサービスユニットに含まれるファイルについて以下に説明します。
TCP/IP BCのSUのファイル
表2.9.10.1-1
項目
説明
/META-INF/schema
メッセージ検証用スキーマを格納するフォルダです。
/META-INF/jbi.xml
サービスユニットの配備記述子です。
endpoints.xml
TCP/IP BCのエンドポイントの設定が記述されます。
*.su
サービスユニットの管理ファイルです(編集不可)。

2.9.10.2. エンドポイントの設定

SUエディタを使用してTCP/IP BCの基本的な設定をする方法を説明します。


図2.9.10.2-1

基本設定項目

Memo
 エンドポイントを追加する方法については、 2.7.1. エンドポイントの追加 をご覧下さい。

表2.9.10.2-1
設定項目
説明

エンドポイント一覧
SUで定義されたエンドポイントの一覧を表示します。
 
基本設定
エンドポイントロール
TCP/IP BC のエンドポイントロールを指定します。
プロバイダ、コンシューマから選択 [必須]
サービス名
エンドポイントロールがプロバイダの場合、エンドポイントが提供するサービス名を指定します。
   エンドポイントロールがコンシューマの場合、呼び出し先となるエンドポイントのサービス名を指定します。
QName(名前空間、ローカル名) [必須]
インタフェース名
エンドポイントロールがプロバイダの場合、エンドポイントが提供するインタフェース名を設定します。
   エンドポイントロールがコンシューマの場合、呼び出し先となるエンドポイントのインタフェース名を指定します。
QName(名前空間、ローカル名)[必須]
ESBインスタンス名
分散ESB機能を使用する場合にのみESBインスタンス名を指定します。 その他の場合は空欄にします。
文字(A-Z、a-z)、数字(0-9)、ハイフン(-)、点(.)、下線(_)の組み合わせ [任意]
オペレーション一覧
オペレーションを設定します。
 
メッセージエクスチェンジハンドラ
メッセージエクスチェンジハンドラを設定します。
 
共通設定
共通項目(セキュリティ認証、トランザクション、メッセージ送信優先度、エラーリトライ)を設定します。
 
オプション一覧
オプションを設定します。
 
TCP/IP BCに関する設定項目
表2.9.10.2-2
設定項目
説明

TCP/IP BCの設定
接続先ホスト
接続先のホストを指定します。
【マルチバイト文字列指定可】
文字列(ホスト名)[必須]
   ※プロバイダの場合のみ
接続を許可するホスト
接続を受け付けるためのアドレスを指定します。
複数のアドレスを持つサーバなどで特定のアドレスに対する接続要求だけを受信することができます。 空欄の場合は全てのアドレスで受信します。
文字列(ホスト名)[任意]
   ※コンシューマの場合のみ
ポート
コンシューマ:接続を待ち受けるポート番号を指定します。既に使用されているポートを指定した場合、起動時にエラーになります。値はドメインで一意です。
プロバイダ:接続先のポート番号を指定します。
数値(0〜65535)[必須]
クラス名
通信プロトコルを実装したハンドラのクラス名を指定します。
文字列(クラス名)[必須]
パラメータ
通信プロトコルを実装したハンドラのパラメータの名前と値を指定します。
【マルチバイト文字列指定可】
最大プールサイズ
コネクションの最大数を設定します。
数値(0〜2147483647)[任意]
デフォルト値:10
   ※プロバイダの場合のみ
最小プールサイズ
コネクションの最小数を設定します。
数値(0〜2147483647)[任意]
デフォルト値:2
   ※プロバイダの場合のみ
初期プールサイズ
起動時に張るコネクションの数を設定します。
数値(0〜2147483647)[任意]
デフォルト値:0
   ※プロバイダの場合のみ
コネクション解放の待ち合わせ時間
コネクションプールの最小プールサイズを越えて接続されたコネクションの使用後、コネクションを切断するまでの時間を設定します。0の場合は即座に切断します。
数値(0〜2147483647)[任意]
単位:秒
デフォルト値:15
   ※プロバイダの場合のみ
コネクション状態監視
コネクション状態監視を行うかどうか。および、監視を行うタイミング。
下記の値から選択。[任意]
  • monitor
  • method
  • none
デフォルト値:none
   ※プロバイダの場合のみ
コネクション状態監視タイムアウト
コネクション状態監視を行う際の、応答タイムアウト時間。
数値(0〜2147483647)[任意]
単位:秒
デフォルト値:3
   ※プロバイダの場合且つコネクション状態監視がmonitor、methodのときのみ。
コネクション状態監視間隔
コネクション状態監視を巡回するタイミング。
数値(0〜2147483647)[任意]
単位:秒
デフォルト値:10
   ※プロバイダの場合且つコネクション状態監視がmonitorのときのみ。
ソケットを関連付ける
inboundのソケットとoutboundのソケットの関連付けを行うか否か。
TCP/IP BC同士の組み合わせでのみ使用可能です。
下記の値から選択。[任意]
  • true
  • false
デフォルト値:false
   ※プロバイダの場合のみ
接続タイムアウト
TCPポートに接続するまでのタイムアウト時間を設定します。Outboundのみ。0を指定すれば無限。
数値(0〜2147483647)[任意]
単位:ミリ秒
デフォルト値:0
   ※プロバイダの場合のみ
最大コネクション数
同時に接続を許可するコネクションの数を指定します。
数値(0〜2147483647)[任意]
デフォルト値:0
   ※コンシューマの場合のみ
コネクションのバックログ
受信する接続要求のキュー最大長(バックログ)を設定します。
数値(0〜2147483647)[任意]
デフォルト値:50
   ※コンシューマの場合のみ
コネクション自動再接続
コネクション自動再接続の施行回数。-1の場合は無限に試行する。0の場合はコネクション自動再接続しない。
数値(-1〜2147483647)[任意]
デフォルト値:-1
タイムアウト(SO_TIMEOUT)
呼び出す外部サーバーからの応答待ち時間(ミリ秒)を指定します。
数値(0〜2147483647)[任意]
単位:ミリ秒
デフォルト値:0
受信バッファサイズ(SO_RCVBUF)
SocketのSO_RCVBUF オプションを、指定された値に設定します。
数値(0〜2147483647)[任意]
単位:バイト
デフォルト値:8192
送信バッファサイズ(SO_SNDBUF)
SocketのSO_SNDBUF オプションを、指定された値に設定します。
数値(0〜2147483647)[任意]
単位:バイト
デフォルト値:8192
TCP_NODELAY
TCP_NODELAY を有効または無効にします。
下記の値から選択。[任意]
  • true
  • false
デフォルト値:false
※ 妥当性チェックを行うため、問題がある項目名が赤色となり、正しく修正すると、項目名が黒くなります。 詳細は、2.8. 妥当性チェックを参照してください。
   ※ コンシューマでエンドポイントロールを指定する場合、参照をクリックすると、SU-エンドポイント一覧 ダイアログが表示されます。このダイアログを利用して、カレントサービスアセンブリプロジェクトに存在しているサービスユニットに関するサービス名やインタフェース名などの情報を再利用できます。


図2.9.10.2-2

2.9.10.3. オペレーション設定

 オペレーション一覧追加をクリックし、オペレーションを追加します。
 SUエディタにおける参照をクリックして、SU-エンドポイント一覧ダイアログからサービスユニットとエンドポイントを指定する場合、オペレーション一覧にそれらの指定情報が表示されます。オペレーションリストから、1つのオペレーションを選択してオペレーション設定情報を再利用できます。


図2.9.10.3-1

オペレーションの設定項目
表2.9.10.3-1
項目
説明

オペレーション名
エンドポイントロールがプロバイダの場合、エンドポイントが提供するオペレーション名を指定します。
   エンドポイントロールがコンシューマの場合呼び出し先となるエンドポイントのオペレーション名を指定します。
QName(名前空間、ローカル名)[必須]
メッセージ交換方式
使用するメッセージ交換方式を指定します。
   コンシューマの場合、プロバイダの提供するメッセージ交換方式を指定してください。
in-only、 in-out、robust-in-only、in-optional-outから選択 [必須]
スキーマファイル インプット/アウトプット 対象SUフォルダのMETA-INFフォルダのschemaフォルダ配下にあるスキーマファイルの相対パスを指定します。
指定したスキーマファイルは、後述のインプット検証/アウトプット検証を選択することで実行時のメッセージ検証に利用することができます。
選択しなかった場合も、XSLT SE による変換の定義の際のインプット/アウトプットスキーマとして利用することができます。    [メッセージ交換方式を指定した場合のみ設定可能]
参照
(インプット/アウトプット)
スキーマファイルの選択ダイアログを開きます。
スキーマファイルを選択すると、その相対パスがインプットおよびアウトプットのファイルのテキストボックスに表示されます。
利用方法については、[2.7.7. スキーマファイルの設定] を参照して下さい。
 
検証実行 インプットの検証実行 実行時に、インプットで指定したスキーマファイルでのメッセージの検証を実施します。
   選択時には、スキーマファイルのインプットの指定は必須項目となります。
   [メッセージ交換方式を指定した場合のみ設定可能]
デフォルトは非選択 [任意]
アウトプットの検証実行 実行時に、アウトプットで指定したスキーマファイルでのメッセージの検証を実施します。
   選択時には、スキーマファイルのアウトプットの指定は必須項目となります。
   [メッセージ交換方式を指定した場合のみ設定可能]
デフォルトは非選択 [任意]
入力メッセージのタイプ
入力メッセージのタイプを指定します。
下記の値から選択。[任意]
  • xml
  • attachment
デフォルト値:xml
出力メッセージのタイプ
出力メッセージのタイプを指定します。
下記の値から選択。[任意]
  • xml
  • attachment
デフォルト値:xml

2.9.10.4. セキュリティ認証の設定

セキュリティ認証を ON にし、設定 をクリックすると、セキュリティ認証詳細設定ダイアログが表示されます。


図2.9.10.4-1

表2.9.10.4-1
項目
説明

エンドポイント名のURL表記
エンドポイントをURL表記した値。リソース管理に用いられます。
http://webotxesb/<BC名>/エンドポイント名
省略した場合、ESB内部で自動生成されます。
エンドポイントの認証の設定
OFFにした場合はエンドポイントの認証を行いません。
 
エンドポイントのID
認証に利用するIDを設定します。
文字列[必須]
パスワード
認証に利用するパスワードを設定します。パスワードは暗号化とします。
文字列[任意]
ログインモジュールの設定を行う
ログインモジュールの設定を行います。
任意の文字列[任意]
  • ESBSECUREMASTERRealm
  • ESBDefaultCustomRealm
デフォルト値:ESBSECUREMASTERRealm
エンドポイントの認可の設定
OFFにした場合はエンドポイントの認可を行いません。
 
認可に用いる認証情報
認可に利用する認証情報を設定します。
コンシューマの場合
  • consumer
プロバイダの場合
  • client
  • consumer
  • provider
Principalの識別子
Principalの識別子を設定します。
任意の文字列[任意]

2.9.10.5. トランザクションの設定

[2.7.2. トランザクションの設定] を参照して下さい。

2.9.10.6. メッセージ送信優先度の設定

[2.7.3. メッセージ送信優先度の設定] を参照して下さい。

2.9.10.7. エラーリトライの設定

[2.7.4. エラーリトライの設定] を参照して下さい。

2.9.10.8. オプション一覧の設定

[2.7.5. オプション一覧の設定] を参照して下さい。

2.9.10.9. メッセージエクスチェンジハンドラの設定

[2.7.6. メッセージハンドラの設定] を参照して下さい。

2.9.10.10. メッセージ交換方式(MEP)

TCP/IP BC は Outbound、Inbound ともに In-Only、Robust In-Only、In-Out、In-Optional-Out の4つのMEPをサポートします。
メッセージ交換方式(MEP)の説明は [ 製品構成と提供機能 > 3.JBI仕様 > 3.2.Normalized Message Router ] を参照してください。

Outbound
Outboundの各MEPの動作を説明します。

表2.9.10.10-1
MEP タイプ 動作の説明
In-Only
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Done)
TCPIPHandlerのsendメソッドが正常に終了した場合、Doneステータスを設定したメッセージエクスチェンジを NMR に返却します。
応答(Error)
TCPIPHandlerのsendメソッドで例外が発生すると、errorメソッドを実行した後、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
Robust In-Only
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Done)
TCPIPHandlerのsendメソッド、receiveメソッドが正常に終了した場合、Doneステータスを設定したメッセージエクスチェンジを NMR に返却します。
応答(Fault)
TCPIPHandlerのreceiveメソッドで例外FaultExceptionが発生した場合、Faultメッセージを含むメッセージエクスチェンジを NMR に返却します。
応答(Error)
TCPIPHandlerのsendメソッドまたはreceiveメソッドで例外FaultException以外の例外が発生すると、errorメソッドを実行した後、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
In-Out
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Out)
receiveメソッドで返却されたInputStreamを、Outメッセージとしてメッセージエクスチェンジに設定し、NMRに送信します。
応答(Fault)
TCPIPHandlerのreceiveメソッドで例外FaultExceptionが発生した場合、Faultメッセージを含むメッセージエクスチェンジを NMR に返却します。
応答(Error)
TCPIPHandlerのsendメソッドまたはreceiveメソッドで例外FaultException以外の例外が発生すると、errorメソッドを実行した後、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
In-Optional-Out
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Out)
receiveメソッドで返却されたInputStreamを、Outメッセージとしてメッセージエクスチェンジに設定し、NMRに送信します。
応答(Done)
TCPIPHandlerのreceiveメソッドがnullを返却した場合に、Doneステータスを設定したメッセージエクスチェンジを NMR に返却します。
応答(Fault)
TCPIPHandlerのreceiveメソッドで例外FaultExceptionが発生した場合、Faultメッセージを含むメッセージエクスチェンジを NMR に返却します。
応答(Error)
TCPIPHandlerのsendメソッドまたはreceiveメソッドで例外FaultException以外の例外が発生すると、errorメソッドを実行した後、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。

Inbound
Inboundの各MEPの動作を説明します。

表2.9.10.10-2
MEP
タイプ
動作の説明
In-Only
要求
TCPIPHandlerのreceiveメソッドによりクライアントアプリケーションからメッセージを受け取り、返却されたInputStream をInメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Done)
Outboundで正常に処理が行われた場合にDoneメッセージを受け取ります。その後receiveメソッドを実行し、同じTCPコネクション上の次のメッセージの待ち受けを開始します。
応答(Error)
Outboundの処理で異常が発生した場合にErrorメッセージを受け取ります。errorメソッドを実行し、 その後TCPコネクションを破棄します。
Robust In-Only
要求
TCPIPHandlerのreceiveメソッドによりクライアントアプリケーションからメッセージを受け取り、返却されたInputStream をInメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Done)
Outboundで正常に処理が行われた場合にDoneメッセージを受け取ります。その後TCPIPハンドラのreceiveメソッドを実行し、同じTCPコネクション上の次のメッセージの待ち受けを開始します。
応答(Fault)
NMR からメッセージエクスチェンジ受け取り、Faultメッセージを取りだしてTCPIPHandlerのfaultメソッドのパラメータとして渡します。 faultメソッドにおいて外部アプリケーションと通信を行います。
応答(Error)
Outboundの処理で異常が発生した場合にErrorメッセージを受け取ります。TCPIPハンドラのerrorメソッドを実行し、 その後TCPコネクションを破棄します。
In-Out
要求
TCPIPHandlerのreceiveメソッドによりクライアントアプリケーションからメッセージを受け取り、返却されたInputStream をInメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Out)
NMR からメッセージエクスチェンジ受け取り、Outメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Fault)
NMR からメッセージエクスチェンジ受け取り、Faultメッセージを取りだしてTCPIPHandlerのfaultメソッドのパラメータとして渡します。 faultメソッドにおいて外部アプリケーションと通信を行います。
応答(Error)
Outboundの処理で異常が発生した場合にErrorメッセージを受け取ります。TCPIPハンドラのerrorメソッドを実行し、 その後TCPコネクションを破棄します。
In-Optional-Out
要求
TCPIPHandlerのreceiveメソッドによりクライアントアプリケーションからメッセージを受け取り、返却されたInputStream をInメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Out)
NMR からメッセージエクスチェンジ受け取り、Outメッセージを取りだしてTCPIPHandlerのsendメソッドのパラメータとして渡します。 sendメソッドにおいて外部アプリケーションと通信を行います。
応答(Done)
Outboundで正常に処理が行われて、返却メッセージがない場合にDoneメッセージを受け取ります。その後TCPIPハンドラのreceiveメソッドを実行し、同じTCPコネクション上の次のメッセージの待ち受けを開始します。
応答(Fault)
NMR からメッセージエクスチェンジ受け取り、Faultメッセージを取りだしてTCPIPHandlerのfaultメソッドのパラメータとして渡します。 faultメソッドにおいて外部アプリケーションと通信を行います。
応答(Error)
Outboundの処理で異常が発生した場合にErrorメッセージを受け取ります。TCPIPハンドラのerrorメソッドを実行し、 その後TCPコネクションを破棄します。

2.9.10.11. ノーマライズ規則

ノーマライズ規則

TCP/IP BCのInboundのリクエスト受信処理、およびOutboundのレスポンス受信処理では、 外部アプリケーションから受け取ったメッセージをTCP/IPハンドラのreceiveメソッドに より処理した結果をメッセージエクスチェンジに変換(ノーマライズ)します。 TCP/IP BCのノーマライズを示した図です。 オペレーションの設定項目「入力メッセージのタイプ」によりメッセージを 格納する箇所を指定することができます。 「入力メッセージのタイプ」を"XML"に指定した場合はノーマライズメッセージの メッセージコンテントに、"attachment"に指定した場合は添付ファイルに格納します。


図2.9.10.11-1

デノーマライズ規則

TCP/IP BCのInboundのレスポンス送信処理、およびOutboundのリクエスト送信処理では、 ノーマライズとは逆に、メッセージエクスチェンジから受け取ったメッセージを TCP/IPハンドラのsendメソッドにより外部アプリケーションに送信するメッセージに変換(デノーマライズ)します。 オペレーションの設定項目「出力メッセージのタイプ」によりメッセージを 取りだす箇所を指定することができます。 「出力メッセージのタイプ」を"XML"に指定した場合はノーマライズメッセージの メッセージコンテントから、"attachment"に指定した場合は添付ファイルから取り出します。


図2.9.10.11-2

2.9.10.12. TCP/IPハンドラ

TCP/IPハンドラを作成するにはインタフェース com.nec.webotx.jbi.binding.tcpip.handler.ProtocolHandler を implementしたクラスを作成します。 インタフェースTCPIPHanlderで実装するメソッドを以下で説明します。

インタフェースProtocolHandlerの定義は以下の通りです。
このインタフェースクラスは[WEBOTX_DIR]/jbi/components/tcpip/tcpipbinding.jar を展開して 生成される tcpipbinding_rt.jar か、[WEBOTX_DIR]/jbi/lib/jbi-api.jar(*WebOTX Developerをインストールした場合のみ) に含まれます。

package com.nec.webotx.jbi.binding.tcpip.handler;
import com.nec.webotx.jbi.binding.tcpip.handler.FaultException;

public interface ProtocolHandler {

    public void init(Map<String, String> properties, Logger logger);

    public InputStream receive(InputStream senderIn, OutputStream senderOut, Logger logger) throws IOException, FaultException;

    public void send(InputStream nmrIn, OutputStream receiverOut, Logger logger) throws IOException;

    public void fault(InputStream nmrIn, OutputStream receiverOut, Logger logger) throws IOException;

    public void error(Exception e, OutputStream receiverOut, Logger logger) throws IOException;

    public void destroy(Logger logger);

    public boolean check(InputStream receiveIn, OutputStream receiveOut, Logger logger) throws IOException;
    
    public void initMessage(MessageContext arg0, Logger arg1)throws IOException;
}

次にこれらの各メソッドの実装方法について説明します。 Developers' Studio を使用している場合は、[新規]-[その他]-[ESB]-[TCP/IPハンドラ]を選択することで クラスの雛型を生成できます。詳細は [ 2.12.サービスアセンブリへのカスタム処理の組み込み > 2.12.3.TCP/IPハンドラの作成 ] を 参照してください。

表2.9.10.12-1 TCPIPHandlerの各メソッドの説明
メソッド説明
コンストラクタ publicかつ引数なしのコンストラクタ(デフォルトコンストラクタ)が存在しなければなりません。
init コネクション確立直後にTCP/IP BCから一度だけ呼び出されます。パラメーターの初期化などを記述します。
receive Inboundではクライアントから受信、Outboundではサーバアプリケーションから受信する方向の処理を記述します。新しいInputStreamオブジェクトを生成してreturnします。引数senderInをそのままreturnしてはいけません。

(1)受信メッセージをin/outメッセージとしてNMRに送信する場合
   引数senderInからソケットの受信データを取り出し、NormalizedMessageに封入するメッセージを返却値として返します。返却されたメッセージはTCP/IP BCによりin/outメッセージにセットされます。また、ソケットをクローズする場合はsenderIn.close()もしくはsenderOut.close()を実行します。
(2)受信メッセージをFaultメッセージとしてNMRに送信する場合
   引数inからソケットの受信データを取り出し、FaultException(詳細は後述)にセットしてスローします。ソケットをクローズする場合はFaultExceptionをスローする前にsenderIn.close()を実行します。
(3)受信メッセージをErrorメッセージとしてNMRに送信する場合
   Outboundにてメソッド内で例外が発生した場合に、例外の内容がErrorメッセージとしてNMRに送信され、ソケットはクローズされます。
   (Inboundではメソッド内で例外が発生してもErrorメッセージがNMRに送信されることはなく、ソケットはクローズされます。)

(1),(2),(3)いずれのケースにおいても、inboundでコネクションをクローズする場合、outメッセージがあっても返信処理は行われません。
なお、OutboundかつIn-Onlyの場合は使用しないため、空実装でよいです。
send Inboundではクライアントへ送信、Outboundではサーバアプリケーションへ送信する方向の処理を記述します。 引数inからデータを取り出し引数receiverOutに書き込みます。receiverOutに書き込まれたデータはTCPIP BCによりクライアント/サーバーへ送信されます。ソケットをクローズする場合はreceiverOut.close()を実行します。 メソッド内で例外が発生した場合に、例外の内容がErrorメッセージとしてNMRに送信され、ソケットはクローズします。 なお、InboundかつIn-Onlyの場合は使用しないため、空実装でよいです。
fault NMRからFaultメッセージを受け取った時の処理を記述します。引数nmrInはFaultをXMLで直列化したものです。 引数nmrInからfaultメッセージのデータを取り出し引数receiverOutに書き込みます。receiverOutに書き込まれたデータはTCP/IP BCによりクライアント/サーバーへ送信されます。ソケットをクローズする場合はreceiverOut.close()を実行します。 メソッド内で例外が発生した場合に、例外の内容がErrorメッセージとしてNMRに送信され、ソケットはクローズされます。 なお、InboundかつIn-Onlyの場合は使用しないため、空実装でよいです。
error NMRからErrorステータスのMessageExchangeを受け取った時、およびInbound側でNMRへメッセージを送信するまでに例外が発生した時の処理を記述します。引数eから例外のデータを取り出し引数receiverOutに書き込みます。receiverOutに書き込まれたデータはTCPIP BCによりクライアント/サーバーへ送信されます。ソケットをクローズする場合はout.close()を実行します。 メソッド内で例外が発生した場合に、メッセージングは中断されソケットはクローズされます。 なお、InboundかつIn-Onlyの場合は使用しないため、空実装でよいです。
destroy コネクション切断時に一度だけ呼ばれます。リソースの破棄などを記述します。
check コネクションの状態確認のための処理を記述します。コネクション状態確認時に呼び出し、falseが返却されるとコネクションを破棄します。 また、全てのメソッドが共通して引数に持っているLoggerオブジェクトを利用してログ出力を行うと、webotx_esb.logおよびwebotx_agent.logにログが出力されます。
TCP/IPハンドラのクラスを作成したらサービスアセンブリに追加します。追加方法は次の2通りがあります。