2.9.2. JMSバインディング

JMS BC は、WebOTX ESBにおいて JMS を接続プロトコルとしたサービス連携機能を提供します。 JMS BCは、プロバイダとしての動作、コンシューマとしての動作をサポートします。
JMS BC 動作概要


図2.9.2-1

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

JMS BC のサービスユニットのファイル構成について説明します。
JMS BC のサービスユニットのフォルダ構成は下図の通りです。


図2.9.2.1-1

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

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

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


図2.9.2.2-1

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

基本の設定項目
表2.9.2.2-1
項目
説明

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

JMS BCの設定
送信先名
要求用送信先の名前を指定します。JMSリソース作成時に指定したJNDI名を使用します。
   [リソースアダプタ名その他の場合は無効/それ以外の場合は指定必須]
【マルチバイト文字列指定可】
文字列[任意]
送信先タイプ
要求用送信先のタイプを指定します。
“Queue”、“Topic”から選択[必須]
トピックサブスクライバの持続性
持続性サブスクライバを使用する場合はdurableを、使用しない場合はnon-durableを指定します。
   [送信先タイプTopicの場合のみ指定可能]
“durable”、“non-durable”から選択
   デフォルトは”non-durable”[任意]
サブスクリプション名
持続性サブスクライバで使用するサブスクリプション名を指定します。
   [エンドポイントロールコンシューマで、送信先タイプTopicかつトピックサブスクライバの持続性durableの場合のみ指定可能]
【マルチバイト文字列指定可】
文字列[任意]
クライアントID
クライアントIDを共有することにより、同じIDをもつエンドポイントの中の1つにのみメッセージが配信されます。WebOTX JMSのマルチコンシューマ機能を利用する場合のみ有効です。
   [エンドポイントロールコンシューマで、送信先タイプTopicの場合のみ指定可能]
【マルチバイト文字列指定可】
文字列[任意]
クライアントIDの共有
クライアントIDを共有するか否かを指定します。WebOTX JMSのマルチコンシューマ機能を利用する場合のみ有効です。
   [エンドポイントロールコンシューマで、送信先タイプTopicの場合のみ指定可能]
“共有しない”、“共有する”から選択[任意]
コネクションの
コネクションファクトリ名
要求用コネクションの接続時に使用するJMSのコネクションファクトリ名を指定します。JMSリソース作成時に指定したJNDI名を指定します。
   [リソースアダプタ名その他の場合は無効/それ以外の場合は指定必須]
【マルチバイト文字列指定可】
文字列[任意]
コネクションのユーザ名
ユーザ名を指定します。
【マルチバイト文字列指定可】
文字列[任意]
コネクションのパスワード
パスワードを指定します。
【マルチバイト文字列指定可】
文字列[任意]
メッセージの永続性
メッセージの永続性を指定します。
   JMSメッセージヘッダのJMSDeliveryModeで利用します。
“persistent”、“non-persistent”、 “指定なし”から選択[任意]
   デフォルトは”指定なし”
トランザクション
トランザクション制御を指定します。
   no-transaction: トランザクション制御を行いません。
   xa-transaction:XAトランザクション制御を行います。制御対象は、エンドポイントロールがコンシューマの場合は“in-only”、“in-out”、“robust-in-only”、プロバイダの場合は“in-only”です。
“no-transaction”、“xa-transaction”から選択[任意]
   デフォルトは”no-transaction”
メッセージセレクタ
メッセージセレクタを指定します。
   エンドポイントロールコンシューマの場合は要求受信時、プロバイダの場合は応答受信時に使用するものを指定します。
【マルチバイト文字列指定可】
文字列[任意]
メッセージ有効期限
メッセージの有効期限(ミリ秒)を指定します。
   JMSメッセージヘッダのJMSExpirationで利用します。
数値(0以上)[任意]
優先度
メッセージの優先度を指定します。
   JMSメッセージヘッダのJMSPriorityで利用します。
“指定なし”、“数値(0-9)”から選択[必須]
   デフォルトは”指定なし”
タイプ
メッセージのタイプを指定します。
   JMSメッセージヘッダのJMSTypeで利用します。
【マルチバイト文字列指定可】
文字列[任意]
相関方法
メッセージを対応付ける方法を指定します。
   JMSCorrelationID: 要求時のJMSCorrelationIDを応答時に指定する方法。
   JMSMessageID: 要求時のJMSMessageIDを応答時に指定する方法。
“JMSCorrelationID”、”JMSMessageID“のいずれかを選択[任意]
   デフォルトは”JMSCorrelationID”
応答用送信先名
応答用送信先の名前を指定します。
   JMSリソース作成時に指定したJNDI名を使用します。
   指定しない場合、デフォルトの応答用送信先が使用されます。
   [送信先タイプQueueの場合のみ指定可能]
文字列[任意]
タイムアウト
応答タイムアウト(ミリ秒)を指定します。
   有効期限超過により破棄された場合や相手システムからの応答がこない場合に、エラー応答を受けることができます。
   ※Transactionサービスのトランザクションタイムアウト値は、応答タイムアウト値より大きな(30秒程度加算した)値にしてください。
数値(0以上)
   [“no-trasaction”を選択した場合、任意]
   [“xa-transaction”を選択した場合、必須]

応答用コネクションの
    コネクションファクトリ名
応答用コネクションの接続時に使用するJMSのコネクションファクトリ名を指定します。
   JMSリソース作成時に指定したJNDI名を指定します。
   [送信先タイプQueueの場合のみ指定可能]
【マルチバイト文字列指定可】
文字列[任意]
応答用コネクションの
   ユーザ名
ユーザ名を指定します。
   [送信先タイプQueueの場合のみ指定可能]
【マルチバイト文字列指定可】
文字列[任意]
応答用コネクションの
   パスワード
パスワードを指定します。
   [送信先タイプQueueの場合のみ指定可能]
【マルチバイト文字列指定可】
文字列[任意]
リソースアダプタ名
リソースアダプタの名前を指定します。
   jmsra: WebOTX JMSリソースアダプタ
   genjmsra: 汎用JMSリソースアダプタ(他社JMSプロバイダ連携用)
   [ロールコンシューマのときのみ指定可能]
“jmsra”、 “genjmsra”、 “使用しない”、 “その他”から選択[任意]
   “その他”が選択された場合、テキストボックスは入力可能、また、必須項目となります。
ActivationSpec定義
ActivationSpec定義を表示します。
 
JMS付加情報のESB間転送
JMS BCのプロパティ情報をESB間で転送するか否かの定義します。
   連携する別ESB上のエンドポイントにおいて、「JMS付加情報の伝播」機能を利用する場合、本設定を有効にしておく必要があります。
   伝播機能を利用しない場合、本設定を無効にすることで無駄な転送を省くことができます。
“true”、“false”から選択
   デフォルトは”true”[任意]
JMS付加情報の伝播
ONにした場合は、JMS付加情報の伝播を設定します。
 
※ 妥当性チェックを行うため、問題がある項目名が赤色となり、正しく修正すると、項目名が黒くなります。 詳細は、2.8. 妥当性チェックを参照してください。
※ コンシューマでエンドポイントロールを指定する場合、参照をクリックすると、SU-エンドポイント一覧ダイアログが表示されます。このダイアログを利用して、カレントサービスアセンブリプロジェクトに存在しているサービスユニットに関するサービス名やインタフェース名などの情報を再利用できます。


図2.9.2.2-2

2.9.2.3. オペレーション設定

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


図2.9.2.3-1

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

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

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

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


図2.9.2.4-1

表2.9.2.4-1
項目
説明

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

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

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

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

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

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

Outbound
Outboundでは、NMR から受け付けたメッセージエクスチェンジをJMSメッセージに変換(デノーマライズ)し、外部のJMSクライアントが待ち受ける送信先に送信します。また、外部のJMSクライアントから返却されたJMSメッセージは応答用送信先から受信し、メッセージエクスチェンジに変換(ノーマライズ)し、 NMR に返却します。

Memo
JMSメッセージの付加情報については、「メッセージ変換規則」もあわせてご覧ください。

JMS BC OutboundのMEPと動作の対応
表2.9.2.7-1
MEP
タイプ
動作の説明
In-Only
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをJMSメッセージ(※)に変換して、エンドポイントで定義された送信先に送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   メッセージエクスチェンジのプロパティ
   ”javax.jbi.transaction.jta”にトランザクションオブジェクトが格納されており、エンドポイントがトランザクションに対応している場合、JMSメッセージの送信処理をトランザクションの中で実行します。
   ※JMS BC が設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
       ”SUCCESS”
Robust In-Only
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをJMSメッセージ(※)に変換して、エンドポイントで定義された送信先に送信し、応答用送信先からのFaultかdoneに相当するJMSメッセージを待ち合わせます。
   メッセージエクスチェンジにトランザクションオブジェクトが格納されていても、何も行いません。
   ※JMS BC が設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”SUCCESS”
   ・JMSCorrelationID
      相関方法がJMSCorrelationIDの場合
      伝播されたJMSCorrelationIDがあればその値を、無ければメッセージエクスチェンジ識別子
      ※マルチプロセスの場合、識別子が付与されます。
      相関方法がJMSMessageIDの場合
      なし
   ・JMSReplyTo
      応答用送信先

応答(Fault)
応答用送信先からFAULTを示すJMSメッセージ(※)を受信すると、変換したFaultデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※JMSクライアントが設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”FAULT”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID

応答(Error)
JMSメッセージの送信に失敗したときにErrorとなります。応答用送信先からERRORを示すJMSメッセージ(※)を受信すると、例外スタックを変換したデータを格納したメッセージエクスチェンジを NMR に返却します。
   ※JMSクライアントが設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”ERROR”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID
応答(done)
応答用送信先からDONEを示すJMSメッセージ(※)を受信すると、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   ※JMSクライアントが指定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”UNKNOWN”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID
In-Out
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをJMSメッセージ(※)に変換して、エンドポイントで定義された送信先に送信し、応答用送信先からのoutかFaultに相当するJMSメッセージを待ち合わせます。
メッセージエクスチェンジにトランザクションオブジェクトが格納されていても、何も行いません。
   ※ JMS BC が設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”SUCCESS”
   ・JMSCorrelationID
      相関方法がJMSCorrelationIDの場合
      伝播されたJMSCorrelationIDがあればその値を、無ければメッセージエクスチェンジ識別子
      ※マルチプロセスの場合、識別子が付与されます。
      相関方法がJMSMessageIDの場合
      なし
   ・JMSReplyTo
      応答用送信先
応答(out)
応答用送信先からoutを示すJMSメッセージ(※)を受信すると、変換したoutデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※JMSクライアントが設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”SUCCESS”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID
応答(Fault)
応答用送信先からFAULTを示すJMSメッセージ(※)を受信すると、変換したFaultデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※JMSクライアントが設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”FAULT”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID
応答(Error)
JMSメッセージの送信に失敗したときにErrorとなります。応答用送信先からErrorを示すJMSメッセージ(※)を受信すると、例外スタックを変換したデータを格納したメッセージエクスチェンジを NMR に返却します。
   ※JMSクライアントが設定するJMSメッセージの付加情報
   ・JBI_STATUSプロパティ
      ”ERROR”
   ・JMSCorrelationID
      相関方法がJMSCorrelationID
      in相当のJMSメッセージと同じJMSCorrelationIDを設定
      相関方法がJMSMessageID
      受信したJMSメッセージのJMSMessageID
In Optional-Out
(JMS BC では対応しません)

Inbound
Inboundでは、外部のJMSクライアントからのリクエストを待ち受けます。JMSメッセージを受信したら、メッセージエクスチェンジに変換(ノーマライズ)し、 NMR に渡します。 NMR から渡ってきたメッセージエクスチェンジをJMSメッセージに変換(デノーマライズ)し、外部のJMSクライアントに返します。
JMS BC InboundのMEPと動作の対応
表2.9.2.7-2
MEP
タイプ
動作の説明
In-Only
要求
エンドポイントで定義された要求用の送信先からJMSメッセージ(※)を受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   エンドポイントがトランザクション対応の場合、トランザクションを開始します。 NMR からERRORステータスのメッセージエクスチェンジを受信した場合は、トランザクションをrollbackします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”SUCCESS”を設定。
応答(done)
NMR からDONEステータスが設定されたメッセージエクスチェンジを受信すると完了です。
   エンドポイントがトランザクション対応の場合、トランザクションをcommitします。
応答(error)
JMSサービスが停止している場合、ネットワーク障害が発生した場合などにはerrorが発生します。 NMR からERRORステータスが設定されたメッセージエクスチェンジを受信すると、メッセージボディに例外スタックを変換したデータを格納します。
   エンドポイントがトランザクション対応の場合、トランザクションをrollbackします。
Robust In-Only
要求
エンドポイントで定義された要求用の送信先からJMSメッセージ(※)を受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのFault/doneのメッセージエクスチェンジを待ち受けます。
   エンドポイントがトランザクション対応の場合、トランザクションを開始します。 NMR からERRORステータスのメッセージエクスチェンジを受信した場合は、トランザクションをrollbackします。※JMSメッセージの付加情報
   ・ JBI_STATUSプロパティに”SUCCESS”を設定。
   ・ JMSCorrelationIDに識別子を設定。
   ・ JMSReplyToに応答用送信先を設定。
応答(Fault)
NMR から受け付けたメッセージエクスチェンジに格納されたFaultデータをJMSメッセージ(※)に変換して、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   エンドポイントがトランザクション対応の場合、トランザクションをcommitします。設定によりrollbackさせることもできます。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”FAULT”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定。
応答(done)
NMR からdoneのメッセージエクスチェンジを受信すると、done相当のJMSメッセージ(※)を、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信します。
   エンドポイントがトランザクション対応の場合、トランザクションをcommitします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”UNKNOWN”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定。
応答(error)
JMSサービスが停止している場合、ネットワーク障害が発生した場合などにはerrorが発生します。 NMR からerrorのメッセージエクスチェンジを受信すると、error相当のJMSメッセージ(※)を、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信します。
   エンドポイントがトランザクション対応の場合、トランザクションをrollbackします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”ERROR”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定。

In-Out
要求
エンドポイントで定義された要求用の送信先からJMSメッセージ(※)を受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのout/Faultのメッセージエクスチェンジを待ち受けます。
   エンドポイントがトランザクション対応の場合、トランザクションを開始します。 NMR からERRORステータスのメッセージエクスチェンジを受信した場合は、トランザクションをrollbackします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”SUCCESS”を設定。
   ・JMSCorrelationIDに識別子を設定。
   ・JMSReplyToに応答用送信先を設定。
応答(out)
NMR から受け付けたメッセージエクスチェンジに格納されたoutデータをJMSメッセージ(※)に変換して、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   エンドポイントがトランザクション対応の場合、トランザクションをcommitします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”SUCCESS”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定
応答(Fault)
NMR から受け付けたメッセージエクスチェンジに格納されたFaultデータをJMSメッセージ(※)に変換して、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   エンドポイントがトランザクション対応の場合、トランザクションをcommitします。設定によりrollbackさせることもできます。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”FAULT”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定
応答(Error)
JMSサービスが停止している場合、ネットワーク障害が発生した場合などにはerrorが発生します。 NMR から受け付けたメッセージエクスチェンジに格納されたErrorデータをJMSメッセージ(※)に変換して、in相当のJMSメッセージのJMSReplyToに指定されていた送信先に送信し、Errorステータスを設定したメッセージエクスチェンジを NMR に返却します。
   エンドポイントがトランザクション対応の場合、トランザクションをrollbackします。
   ※JMSメッセージの付加情報
   ・JBI_STATUSプロパティに”ERROR”を設定。
   ・in相当のJMSメッセージと同じJMSCorrelationIDを設定
In Optional-Out
(JMS BC では対応しません)
MEPに関する詳細は、概要編の「3.2NormarizedMessageRouter」-「メッセージ交換方式(MEP)」を参照してください。

2.9.2.8. ノーマライズ規則

NMR から受け取ったメッセージエクスチェンジをJMSクライアントに送信する要求JMSメッセージに変換することをデノーマライズと言います。また、JMSクライアントから受信した応答JMSメッセージを NMR に送信するメッセージエクスチェンジに変換することをノーマライズと言います。

Outbound
デノーマライズ規則


図2.9.2.8-1

デノーマライズの規則は上図のようになっています。ノーマライズメッセージのプロパティは、JMSメッセージに引き継がれません。メッセージコンテントはJMSメッセージ(TextMessage)のボディに、添付ファイルはJMSメッセージ(BytesMessage)のボディにセットされます。また、JMSメッセージのヘッダやプロパティには、サービスアセンブリで指定した値や伝播した値がセットされます。伝播指定をした場合は、指定したJMSヘッダやJMSプロパティはJMSBC独自の方法でメッセージエクスチェンジから引き継がれます。
メッセージエクスチェンジのエラーがあった場合、JMSクライアントへのメッセージは送出されません。その場合、JMS BCによってErrorメッセージが生成され、その内容を含むメッセージエクスチェンジが NMR に返されます。
ノーマライズ規則


図2.9.2.8-2

ノーマライズ規則は上図のようになっています。JMSメッセージのヘッダやプロパティはノーマライズメッセージには引き継がれません。JMSメッセージのボディは、TextMessageの場合にはメッセージコンテントに、BytesMessageの場合には添付ファイルにセットされます。伝播指定をした場合は、指定したJMSヘッダやJMSプロパティの内容はJMSBC独自の方法でメッセージエクスチェンジに引き継がれます。また、JMSプロパティに入っているJBIステータスに応じてメッセージエクスチェンジのステータスを決定し、セットします。
JMSクライアントからJMS Faultが返ってきた場合、Detailの内容がFaultメッセージのメッセージコンテントにセットされます。

Inbound
ノーマライズ規則


図2.9.2.8-3

ノーマライズ規則は上図のようになっています。JMSメッセージのヘッダやプロパティはノーマライズメッセージには引き継がれません。JMSメッセージのボディは、TextMessageの場合にはメッセージコンテントに、BytesMessageの場合には添付ファイルにセットされます。JMSヘッダやJMSプロパティの内容はJMSBC独自の方法でメッセージエクスチェンジに引き継がれます。
デノーマライズ規則


図2.9.2.8-4

デノーマライズの規則は上図のようになっています。ノーマライズメッセージのプロパティは、JMSメッセージに引き継がれません。メッセージコンテントはJMSメッセージ(TextMessage)のボディに、添付ファイルはJMSメッセージ(BytesMessage)のボディにセットされます。また、JMSメッセージのヘッダやプロパティには、サービスアセンブリで指定した値や伝播した値がセットされます。伝播指定をした場合は、指定したJMSヘッダやJMSプロパティはJMSBC独自の方法でメッセージエクスチェンジから引き継がれます。また、メッセージエクスチェンジのステータスに応じて、JMSプロパティに入っているJBIステータスを決定し、セットします。

JMSメッセージヘッダ
JMSメッセージヘッダに関する規則について説明します。
表2.9.2.8-1
フィールド名
内容
JMSCorrelationID
メッセージの関連付けに使用します。
   相関方法がJMSCorrelationIDの場合に指定します。
   JMS BCは、in相当のJMSメッセージにはメッセージエクスチェンジのエクスチェンジ識別子を指定します。
   外部のJMSクライアントは、任意の識別子を指定します。
   両者とも、inに連鎖するout/Fault/done相当のJMSメッセージで、inと同じ識別子を指定します。
   相関方法がJMSMessageIDの場合は、inのJMSMessageIDをout/Fault/done相当のJMSメッセージで指定します。
JMSReplyTo
メッセージの応答用送信先を相手に示すために使用します。
   JMS BCは、エンドポイント定義で指定した送信先を指定します。指定しない場合はBC内で共有されるデフォルトの応答用送信先が使用されます。
   外部のJMSクライアントは、任意の応答用送信先を指定します。
JMSDeliveryMode
メッセージの永続/非永続を制御するために使用します。
   JMS BCは、デフォルトでは指定なしですが、エンドポイント定義で指定することができます。
   この他に、コネクションファクトリで設定する方法もあります。
   外部のJMSクライアントは、どちらのモードを使用するかは任意です。
JMSExpiration
メッセージに有効期限を設けるために使用します。
JMS BCは、デフォルトでは期限なしですが、エンドポイント定義で指定することができます。
外部のJMSクライアントは、指定については任意です。
JMSPriority
メッセージの優先度付けに使用します。
   JMS BCは、デフォルトでは指定なしですが、エンドポイント定義で指定することができます。
   外部のJMSクライアントは、指定については任意です。
JMSType
メッセージのタイプを特定するために使用します。
   WebOTX JMSでは無効です。
   JMS BCは、デフォルトでは指定なしですが、エンドポイント定義で指定することができます。
   外部のJMSクライアントは、指定については任意です。
   WebOTX JMSでは無効です。

JMSメッセージプロパティ
JMSメッセージプロパティに関する規則について説明します。
表2.9.2.8-2
プロパティ名
内容
JBI_STATUS
メッセージのステータスを指定します。
“SUCCESS”
in/out相当のJMSメッセージ送信時に指定します。この場合、JMSメッセージボディにはTextMessageかBytesMessageタイプのin/out相当データを格納します。
“FAULT”
Fault相当のJMSメッセージ送信時に指定します。この場合、JMSメッセージボディにはTextMessageタイプのFaultデータを格納します。
“ERROR”
Error相当のJMSメッセージ送信時に指定します。この場合、JMSメッセージボディにはTextMessageタイプのErrorデータを格納します。
“UNKNOWN”
done相当のJMSメッセージ送信時に指定します。この場合、JMSメッセージボディにはTextMessageタイプのデータを格納します。
JBI_SERVICE_NAME
サービス名を指定します。
JBI_ENDPOINT_NAME
エンドポイント名を指定します。
JBI_OPERATION_NAME
オペレーション名を指定します。
JBI_OPERATION_NAMESPACE
オペレーションのネームスペースを指定します。

JMSメッセージボディ
JMSメッセージボディに関する規則について説明します。
表2.9.2.8-3
タイプ
内容
TextMessage
XMLデータを格納します。
BytesMessage
バイト配列をひとつだけ格納します。
エンドポイントのオペレーション定義で入出力タイプとして指定できますが、Fault/Error/doneに相当するメッセージでは必ずTextMessageを使用します。

MEPの流れに関する留意点
MEPの流れに関する留意点について説明します。
MEPで規定されている流れをJMS BCと外部のJMSクライアントとの間に適合させた場合のdoneの扱いを以下に示します。JMS BCでは要求管理を行っており、要求の完了をdoneで認識する場合があるため、このように規定しています。done相当のJMSメッセージはJBI_STATUSプロパティに”UNKNOWN”を設定しますが、TextMessageとして格納するデータには特に意味を持たせません。
表2.9.2.8-4
MEP
内容
In-Only
inに対するdone相当のJMSメッセージは必要ありません。
Robust In-Only
inに対するdone相当のJMSメッセージが必要です。
   in→Faultに対するdone相当のJMSメッセージは必要ありません。
In-Out
in→out/Faultに対するdone相当のJMSメッセージは必要ありません。
また、MEPの流れでは明示的にでてきませんが、Errorというステータスがあり、たとえばOutboundでInメッセージを外部のJMSクライアントに送信できないような異常が発生した場合に、その例外情報を NMR に返す場合があります。同様に、外部のJMSクライアントに対しても、何らかの異常を契機にError相当のJMSメッセージを送る場合があります。外部のJMSクライアントも同様にErrorを返すことが可能です。Error相当のJMSメッセージにはJBI_STATUSプロパティに”ERROR”を設定し、TextMessageにはそのエラー情報を設定します。

2.9.2.9. ノーマライズメッセージ

ここでは JMS BC が NMR と送受信するノーマライズメッセージの説明をします。
JMS BC では、メッセージ本体を参照しないため、メッセージボディの変換は行いません。

2.9.2.10. 異常系メッセージ

WebOTX ESBにおいて「誤ったメッセージが入力された」、「外部サービスとの連携に失敗した」等の異常が発生した場合、確認型のMEP(Robust In-Only/In-Out)であれば、JMS BCのInboundから要求側JMSクライアントにTextMessageタイプのJMSメッセージが返却されます。 要求側JMSクライアントでは返却されたJMSメッセージから発生した異常の内容を知ることができます。 以下では、発生する異常の種類ごとのJMS BCのInboundからクライアントアプリケーションに返却するメッセージについて説明します。

異常の種類により Fault または Error の分類があります。 どちらに該当するかは、JMSメッセージに設定されるプロパティJBI_STATUSの値("FAULT"または"ERROR")で判断します。 JMS BCにおいて異常が発生するパターンの一覧です。 [ リファレンス集 開発編(Enterprise Service Bus) > 2. 異常系メッセージ(Fault/Error) > 2.1. バインディングコンポーネント > 2.1.2. JMS BC ]

プロバイダエンドポイントがFaultを返却した場合(JMS BC同士の連携時)

JMS BCのプロバイダエンドポイントが応答側JMSクライアントからFAULT相当のJMSメッセージを受け取ると、JMS BCのInboundにはWebOTX ESB共通のFaultとして通知され、要求側JMSクライアントには、WebOTX ESB共通のFaultフォーマット(esb-fault)で変換したXMLテキストを格納したJMSメッセージが返信されます。

JBI_STATUS=FAULT

<esb-fault xmlns="http://www.nec.com/WebOTX/jbi/fault/">
    <exchangeid>1339724865956-593600000029</exchangeid>
    <date>2012-06-15T10:47:46.222+09:00</date>
    <component>JMSBinding</component>
    <service-assembly>PerformJMSBC_SA</service-assembly>
    <service-unit>JMSBC_SU</service-unit>
    <service-name xmlns:ns2="http://webotx.com/">ns2:PerformSVC</service-name>
    <endpoint>Perform</endpoint>
    <role>PROVIDER</role>
    <string>
        <UserFault xmlns:java="java:sample" xmlns:sam="http://sample.org">
            <sam:Error>Invalid message format.</sam:Error>
        </UserFault>
    </string>
    <detail/>
</esb-fault>

プロバイダエンドポイントがFaultを返却した場合(JMS BC以外との連携時)

SOAP BCのプロバイダエンドポイントが定義誤り(該当オペレーションが存在しない)によりFaultを返却した場合の例です。 要求側JMSクライアントには、WebOTX ESB共通のFaultフォーマット(esb-fault)で変換したXMLテキストを格納したJMSメッセージが返信されます。

JBI_STATUS=FAULT

<esb-fault xmlns="http://www.nec.com/WebOTX/jbi/fault/">
    <exchangeid>1339722122647-593600000010</exchangeid>
    <date>2012-06-15T10:02:03.194+09:00</date>
    <component>SOAPBinding</component>
    <service-assembly>09_HttpInbound_SoapOutbound</service-assembly>
    <service-unit>SOAPSU_09_HttpInbound_SoapOutbound_002</service-unit>
    <service-name xmlns:ns2="http://www.nec.com">ns2:ep_09_HttpInbound_SoapOutbound_002</service-name>
    <endpoint>ep_09_HttpInbound_SoapOutbound_002</endpoint>
    <role>PROVIDER</role>
    <string>500</string>
    <detail>
        <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
            <S:Body>
                <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
                <faultcode xmlns="" xmlns:ns4_="http://www.nec.com/WebOTX/jbi/fault/">S:Client</faultcode>
                <faultstring xmlns="" xmlns:ns4_="http://www.nec.com/WebOTX/jbi/fault/">Cannot find dispatch method for {}request</faultstring>
                </S:Fault>
            </S:Body>
        </S:Envelope>
    </detail>
</esb-fault>

プロバイダエンドポイントがErrorを返却した場合

SOAP BCのプロバイダエンドポイントが外部Webサーバから404を受け取りErrorを返却した場合の例です。 要求側JMSクライアントには、WebOTX ESB共通のErrorを変換したテキストを格納したJMSメッセージが返信されます。

JBI_STATUS=ERROR

com.nec.webotx.jbi.exception.WebOTXESBExceptionImpl: javax.jbi.JBIException: 外部WebサービスからSOAPメッセージ以外のレスポンスメッセージを受け取りました。
レスポンスコードは 404 Not Found です。
ESB Exception message
Message ID: 1339723414204-593600000017
Date      : Fri Jun 15 10:23:34 JST 2012
Component : SOAPBinding
String    : 外部WebサービスからSOAPメッセージ以外のレスポンスメッセージを受け取りました。レスポンスコードは 404 Not Found です。
ServiceAssembly:09_HttpInbound_SoapOutbound
ServiceUnit    :SOAPSU_09_HttpInbound_SoapOutbound_002
ServiceName    :{http://www.nec.com}ep_09_HttpInbound_SoapOutbound_002
EndpointName   :ep_09_HttpInbound_SoapOutbound_002

プロバイダからの応答がなくてタイムアウトした場合

SOAP BCのコンシューマに設定する「タイムアウト」を超えてタイムアウトした場合の例です。 要求側JMSクライアントには、JMS BCとしてメッセージを受理できていないため、エラーを示す単純なテキストを格納したJMSメッセージが返信されます。

JBI_STATUS=ERROR

JMS BC: Timeout happend. 1339669945005-1041600000022

2.9.2.11. オプション設定

SOAP BCの2.9.1.8. オプション一覧の設定節を参照して下さい。

2.9.2.12. JMSリソースアダプタの設定

リソースアダプタを使用する場合、ActivationSpecプロパティを指定することができます。
指定するプロパティは、リソースアダプタによって異なります。
リソースアダプタ名にjmsraを指定した場合は、WebOTXのJMSリソースアダプタに関するWebOTXマニュアルの [ リファレンス集 運用管理・設定編 > 1.7. JMS > 1.7.3. その他の設定項目・設定方法 > 1.7.3.19. ActivationSpec に設定可能なプロパティ] をご覧ください。
リソースアダプタ名にgenjmsraを指定した場合は、WebOTXの汎用JMSリソースアダプタに関する [ リファレンス集 運用管理・設定編 > 1.7. JMS > 1.7.3. その他の設定項目・設定方法 > 1.7.3.18. 他社JMSプロバイダ接続の設定 > 1.7. 配備記述の定義] をご覧ください。
リソースアダプタ名にその他を指定した場合は、他社JMSリソースアダプタ提供元のマニュアルをご覧ください。

SUエディタを使用してActivationSpecプロパティの設定を行う方法について説明します。
ActivationSpec定義追加をクリックし、プロパティ詳細設定ダイアログが表示されます。


図2.9.2.12-1

2.9.2.13. JMS付加情報の伝播設定

SUエディタを使用して伝播の設定を行う方法について説明します。
要求時の伝播はプロバイダロールのエンドポイント、応答時の伝播はコンシューマロールのエンドポイントで定義してください。
JMS付加情報の伝播設定をクリックし、JMS付加情報の伝播詳細設定ダイアログが表示されます。


図2.9.2.13-1

JMS付加情報の伝播設定項目
表2.9.2.13-1
項目
説明

JMSヘッダ
JMSヘッダについて伝播するか否かを指定します。
伝播する項目を選択[任意]
JMSプロパティ
JMSプロパティについて伝播するか否かを指定します。
伝播する項目を選択[任意]
JMSベンダ固有
   プロパティ
JMSベンダ固有プロパティについてすべてを伝播するか否かを指定します。
   「JMS_」(標準)と「WOJMS」(WebOTXの場合)が先頭に付くものが対象となります。「プレフィックス」を指定すると、「WOJMS」ではなく、指定したプレフィックスが先頭に付くものを対象にすることができます。
伝播する場合、“すべて”を選択[任意]
プレフィックス
WebOTX以外のベンダプロパティを識別できるプレフィックスを指定します。
【マルチバイト文字列指定可】
文字列[任意]
対象外リスト
JMSベンダ固有プロパティの対象外リストを表示します。
【マルチバイト文字列指定可】
ユーザプロパティ
ユーザプロパティについてすべてを伝播するか否かを指定します。
   JMSベンダ固有プロパティおよび先頭に「JBI_」が付くプロパティ以外のものが対象となります。
伝播する場合、“すべて”を選択[任意]
対象外リスト
ユーザプロパティの対象外リストを指定します。指定したプロパティだけを、「伝播する」場合に伝播しない、「伝播しない」場合に伝播することが可能です。
【マルチバイト文字列指定可】
更新リスト
更新リストを指定します。
   更新したい特定のJMSヘッダ、JMSプロパティ、JMSベンダ固有プロパティ、ユーザプロパティを指定します。
   全ての設定より優先するため、伝播された情報の上書きや、伝播されていない情報の追加設定ができます。
対象外リスト追加をクリックし、対象外リストの設定ダイアログが表示されます。


図2.9.2.13-2

対象外リストの設定項目
表2.9.2.13-2
項目
説明

対象外リスト
制御対象外とするプロパティ名を指定します。
文字列[任意]
対象外リストを指定すると、伝播の対象を部分的に除外することもできます。
更新リスト追加をクリックし、更新リストの詳細設定ダイアログが表示されます。


図2.9.2.13-3

更新リストの設定項目
表2.9.2.13-3
項目
説明

名前
プロパティの名前を指定します。
【マルチバイト文字列指定可】
文字列[必須]
   例)JMSCorretionID

プロパティの値を指定します。
【マルチバイト文字列指定可】
文字列[必須]

プロパティの型を指定します。
“boolean”、“byte”、“short”、“int”、“long”、“float”、“double”、“String”から選択[必須]
固定値を指定したい場合には、更新リストを使用してください。
設定に関する優先度は、次のようになります。
伝播した値 < 個別指定の値 < 更新リストの値
※  個別指定とは、エンドポイントに「メッセージの永続性」のように専用の設定項目があるものを指します。