2.9.13. Transportバインディング

Transport BCは、Apache Camelが提供するCamelコンポーネントをWebOTX ESB上で動作させるためのBCです。
下図はTransport BC動作概要です。


図2.9.13-1

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

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


図2.9.13.1-1

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

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

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


図2.9.13.2-1

基本設定項目

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

表2.9.13.2-1
設定項目
説明

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

Transport BCの設定
CamelエンドポイントURI
Camelのエンドポイント設定をURIで指定します。
詳細は、[ 2.9.13.10. CamelエンドポイントURIの設定 ]を参照してください。
【マルチバイト文字列指定可】
文字列[必須]
暗号化するURIオプション一覧
暗号化するURIオプションの名前と値を設定します。
詳細は、[ 2.9.13.11. 暗号化するURIオプションの設定 ]を参照してください。
一覧でオプションの名前とオプションの値を表示します。
値は暗号化とします。
CamelContextハンドラ
CamelContextハンドラを設定します。
詳細は、[ 2.9.13.12. CamelContextハンドラの設定 ]を参照してください。

※妥当性チェックを行うため、問題がある項目名が赤色となり、正しく修正すると、項目名が黒くなります。
詳細は、[ 2.8. 妥当性チェック ]を参照してください。
※コンシューマでエンドポイントロールを指定する場合、参照をクリックすると、SU-エンドポイント一覧 ダイアログが表示されます。このダイアログを利用して、カレントサービスアセンブリプロジェクトに存在しているサービスユニットに関するサービス名やインタフェース名などの情報を再利用できます。


図2.9.13.2-2

2.9.13.3. オペレーション設定

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


図2.9.13.3-1

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

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

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

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


図2.9.13.4-1

表2.9.13.4-1
項目
説明

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

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

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

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

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

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

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

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

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

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

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

2.9.13.10. CamelエンドポイントURIの設定

CamelエンドポイントURI参照 をクリックすると、CamelエンドポイントURIの設定ダイアログが表示されます。


図2.9.13.10-1

表2.9.13.10-1
項目
説明

URI形式
URI形式を選択します。
URI形式を変更すると、応じるURIフォーマットがテキストフィールドに表示されます。 このフォーマットに従って実際のエンドポイントURIに変更してください。
選択のみ、入力できない。
テキストフィールド
CamelエンドポイントURIを設定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]

URI形式の選択肢
表2.9.13.10-2
URI形式
CamelエンドポイントURIのフォーマット
説明
AWS - S3(Simple Storage Service) aws-s3://bucket-name[?options] AWS-S3コンポーネントのURIフォーマット
AWS - SES(Simple Email Service) aws-ses://from[?options] AWS-SESコンポーネントのURIフォーマット
AWS - SNS(Simple Norification Service) aws-sns://topicName[?options] AWS-SNSコンポーネントのURIフォーマット
AWS - SQS(Simple Queue Service) aws-sqs://queue-name[?options] AWS-SQSコンポーネントのURIフォーマット
AWS - DDB(DynamoDB) aws-ddb://domainName[?options] AWS-DDBコンポーネントのURIフォーマット
Mail - IMAP imap://[username@]host[:port][?options]
imaps://[username@]host[:port][?options]
Mail(IMAPプロトコル)コンポーネントのURIフォーマット
Mail - POP3 pop3://[username@]host[:port][?options]
pop3s://[username@]host[:port][?options]
Mail(POP3プロトコル)コンポーネントのURIフォーマット
Mail - SMTP smtp://[username@]host[:port][?options]
smtp://[username@]host[:port][?options]
Mail(SMTPプロトコル)コンポーネントのURIフォーマット
MQTT mqtt://name[?options] MQTTコンポーネントのURIフォーマット
LDAP ldap:ldapServerBean[?options] LDAPコンポーネントのURIフォーマット
JSON dataformat:xmljson:(marshal|unmarshal)[?options] DataFormat(xmljson形式)コンポーネントのURIフォーマット
カスタマイズ URI 任意文字列 上記以外のURIフォーマット
テキストフィールドの値は選択されるURI形式と不一致の場合、以下の警告メッセージが表示されます。


図2.9.13.10-2

2.9.13.11. 暗号化するURIオプションの設定

Transport BCの設定で暗号化するURIオプション一覧の右の追加ボタンをクリックすると、暗号化するURIオプション詳細設定ダイアログが表示されます。


図2.9.13.11-1

表2.9.13.11-1
項目
説明

名前
暗号化したいCamelのURIオプションの名前を指定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]

CamelのURIオプションの名前をキーとして取得される値を設定します。
「********」のようなアスタリスクになって文字が隠されるようになっています。
【マルチバイト文字列指定可】
任意の文字列 [必須]

2.9.13.12. CamelContextハンドラ の設定

CamelContextハンドラがチェックありの場合、設定 をクリックすると、CamelContextハンドラ詳細設定ダイアログが表示されます。


図2.9.13.12-1

表2.9.13.12-1
項目
説明

ハンドラ名
このハンドラの名前を設定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]
ハンドラ実装クラス
ハンドラクラスの名前を指定します。
【マルチバイト文字列指定可】
クラス名 [必須]
パラメータ
CamelContextハンドラを操作するパラメータについて設定します。

暗号化するパラメータ
CamelContextハンドラを操作する暗号化するパラメータについて設定します。

ハンドラ一覧下に追加、編集ボタンをクリックすると、ハンドラの初期化パラメータ詳細設定ダイアログが起動します。


図2.9.13.12-2

表2.9.13.12-2
項目
説明

パラメータ名
ハンドラの実装内部でパラメータを取得するために、キーとなるパラメータ名を指定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]
パラメータ値
パラメータ名をキーとして取得される値を設定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]
暗号化するハンドラの初期化パラメータ一覧下に追加、編集ボタンをクリックすると、暗号化するハンドラの初期化パラメータダイアログが起動します。


図2.9.13.12-3

表2.9.13.12-3
項目
説明

パラメータ名
ハンドラの実装内部でパラメータを取得するために、キーとなるパラメータ名を指定します。
【マルチバイト文字列指定可】
任意の文字列 [必須]
パラメータ値
パラメータ名をキーとして取得される値を設定します。
「********」のようなアスタリスクになって文字が隠されるようになっています。
【マルチバイト文字列指定可】
任意の文字列 [必須]

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

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

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

表2.9.13.13-1
MEP タイプ 動作の説明
In-Only
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてCamelコンポーネントのプロデューサに渡します。
応答(Done)
Camelコンポーネントのプロデューサの処理が正常に終了した場合、Doneステータスを設定したメッセージエクスチェンジを NMR に返却します。
応答(Error)
Camelコンポーネントのプロデューサの処理で例外が発生するなど、Outboundの処理で異常が発生した場合に、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
Robust In-Only
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてCamelコンポーネントのプロデューサに渡します。
応答(Done)
Camelコンポーネントのプロデューサの処理が正常に終了した場合、Doneステータスを設定したメッセージエクスチェンジを NMR に返却します。
応答(Fault)
CamelコンポーネントのプロデューサからFaultメッセージが返却された場合、Faultメッセージを含むメッセージエクスチェンジを NMR に返却します。
応答(Error)
Camelコンポーネントのプロデューサの処理で例外が発生するなど、Outboundの処理で異常が発生した場合に、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
In-Out
要求
NMR からメッセージエクスチェンジ受け取り、Inメッセージを取りだしてCamelコンポーネントのプロデューサに渡します。
応答(Out)
Camelコンポーネントのプロデューサから返却されたOutメッセージをメッセージエクスチェンジに設定し、NMRに送信します。
応答(Fault)
CamelコンポーネントのプロデューサからFaultメッセージが返却された場合、Faultメッセージを含むメッセージエクスチェンジを NMR に返却します。
応答(Error)
Camelコンポーネントのプロデューサの処理で例外が発生するなど、Outboundの処理で異常が発生した場合に、例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。

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

表2.9.13.13-2
MEP
タイプ
動作の説明
In-Only
要求
Camelコンポーネントのコンシューマが外部リソースからメッセージを受け取り、Inメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Done)
Outboundで正常に処理が行われた場合にDoneメッセージを受け取ります。Camelコンポーネントのコンシューマに処理を戻します。
応答(Error)
NMR からメッセージエクスチェンジ受け取り、Errorメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。
Robust In-Only
要求
Camelコンポーネントのコンシューマが外部リソースからメッセージを受け取り、Inメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Done)
Outboundで正常に処理が行われた場合にDoneメッセージを受け取ります。Camelコンポーネントのコンシューマに処理を戻します。Camelコンポーネントのコンシューマに処理を戻します。
応答(Fault)
NMR からメッセージエクスチェンジ受け取り、Faultメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。
応答(Error)
NMR からメッセージエクスチェンジ受け取り、Errorメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。
In-Out
要求
Camelコンポーネントのコンシューマが外部リソースからメッセージを受け取り、Inメッセージとしてメッセージエクスチェンジに設定して、NMRに送信します。
応答(Out)
NMR からメッセージエクスチェンジ受け取り、Outメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。
応答(Fault)
NMR からメッセージエクスチェンジ受け取り、Faultメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。
応答(Error)
NMR からメッセージエクスチェンジ受け取り、Errorメッセージを取りだしてCamelコンポーネントのコンシューマに渡します。Camelコンポーネントのコンシューマに処理を戻します。

2.9.13.14. ノーマライズ規則

ノーマライズ規則

Transport BCのInboundのリクエスト受信処理、およびOutboundのレスポンス受信処理では、 Camelコンポーネントから受け取ったエクスチェンジをメッセージエクスチェンジに変換(ノーマライズ)します。 Camelのエクスチェンジとメッセージエクスチェンジの各要素は以下のように対応します。


図2.9.13.14-1

デノーマライズ規則

Transport BCのInboundのレスポンス送信処理、およびOutboundのリクエスト送信処理では、 ノーマライズとは逆に、メッセージエクスチェンジから受け取ったメッセージを Camelコンポーネントに渡すエクスチェンジに変換(デノーマライズ)します。 Camelのエクスチェンジとメッセージエクスチェンジの各要素は以下のように対応します。


図2.9.13.14-2

Memo
Camelのエクスチェンジのプロパティとメッセージのヘッダは、ノーマライズ処理でメッセージエクスチェンジに格納される際に、ESBのプロパティと区別するためにプロパティ名・ヘッダ名に接頭辞「CAMEL_」を付与されます。 メッセージエクスチェンジハンドラの処理でエクスチェンジのプロパティやメッセージのヘッダを扱う場合は、接頭辞「CAMEL_」を付与した名称で扱う必要があります。接頭辞「CAMEL_」はデノーマライズのタイミングで取り除かれてCamelのエクスチェンジに格納されます。

2.9.13.15. Camelエンドポイントの設定

Transport BCでは、Camelエンドポイントの設定をCamelエンドポイントURIと暗号化するURIオプションによって行います。 各設定項目の設定方法については、[ 2.9.13.10. CamelエンドポイントURIの設定 ]、[2.9.13.11. 暗号化するURIオプションの設定 ]を参照してください。
エンドポイントURIのフォーマットや設定可能なオプションについては[ リファレンス集 開発編(Enterprise Service Bus) > 1. APIリファレンス > 1.9. 標準搭載Camelコンポーネント設定一覧 ]を参照してください。

2.9.13.16. CamelContextハンドラ

CamelContextハンドラを利用することで、Camelコンポーネントの起動時に、CamelContextに対して初期化処理を行うことができます。

表2.9.13.16-1 CamelContextハンドラの初期化処理例
Camelコンポーネント処理内容
AWS-S3 AWS接続用のクライアント(AmazonS3Client)をCamelContextに登録することができます。
LDAP LDAP接続のためのDirContextをCamelContextに登録することができます。

CamelContextハンドラを作成するにはインタフェース com.nec.webotx.jbi.binding.transport.handler.CamelContextHandler をimplementしたクラスを作成します。 インタフェースCamelContextHandlerの定義は[ リファレンス集 開発編(Enterprise Service Bus) > 1. APIリファレンス > 1.8.CamelContextハンドラ ]を参照してください。

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

表2.9.13.16-2 CamelContextハンドラの各メソッドの説明
メソッド説明
init エンドポイント起動時に、handleメソッドの直前に一度だけ呼び出されます。ハンドラの初期化処理を実装します。[ 2.9.13.12. CamelContextハンドラの設定 ]で、「パラメータ」、「暗号化するパラメータ」に設定したパラメータが引数に渡されます。「暗号化するパラメータ」の値は復号された状態になっています。
handle エンドポイント起動時に、一度だけ呼び出されます。CamelContextに対する初期化処理を実装します。CamelContextが引数に渡されます。
destroy エンドポイントの停止時に、一度だけ呼び出されます。handleメソッドでCamelContextに登録した情報を削除するなど、ハンドラを破棄する時に実行する処理を実装します。CamelContextが引数に渡されます。

CamelContextハンドラのクラスを作成したらサービスアセンブリに追加します。追加方法は次の2通りがあります。
Memo
CamelContextのインスタンスは、同一プロセス上の全てのエンドポイントで共有されます。複数エンドポイントでCamelContextハンドラを使用している場合、各CamelContextハンドラが処理するCamelContextは同一のインスタンスとなります。

2.9.13.17. Camelコンポーネントの追加・変更

Transport BCでは、標準搭載Camelコンポーネント以外のCamelコンポーネントや、独自にカスタム実装したCamelコンポーネントを追加で組み込んで利用することが可能です。標準搭載Camelコンポーネントについては、 [ 製品構成と提供機能 > 4. ESB > 4.2. バインディングコンポーネント > 4.2.13. Transport BC > 4.2.13.3. 標準搭載Camelコンポーネント ]を参照してください。

JARファイルの配置

追加Camelコンポーネントや独自実装したCamelコンポーネントのJARファイルは下記の1、2のいずれかに配置します。
Camelコンポーネントの動作に別途ライブラリが必要な場合は、併せて配置してください。

1.標準搭載Camelコンポーネントと同じディレクトリ
<INSTANCE_ROOT>/jbi/bindings/TransportBindings/install_root/workspace/lib
このディレクトリに配置したCamelコンポーネントはTransport BC全体で利用可能です。Camelコンポーネントを有効化するために、Transport BCの再起動が必要です。

2.SU個別のディレクトリ
<SU作成ディレクトリ>/META-INF/lib
このディレクトリに配置したCamelコンポーネントは、Camelコンポーネントを含むSUからのみ利用可能です。Camelコンポーネントを有効化するために、Transport BCの再起動は必要ありません。

Caution
Camelのライブラリは、全て同じバージョンのライブラリを使用するようにしてください。