2.9.9. HTTPバインディング

HTTP BCは、 WebOTX ESBにおいてHTTPメッセージの送受信を行うためのコンポーネントです。
HTTP BC動作概要


図2.9.9-1

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

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


図2.9.9.1-1

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

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

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


図2.9.9.2-1

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

基本設定項目
表2.9.9.2-1
設定項目
説明

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

Memo
 エンドポイントロールコンシューマにした場合、動作には別途Inboundサーブレットを配備する必要があります。詳細は[2.9.9.14. Inboundサーブレット]をご参照ください。
エンドポイントロールプロバイダにした場合、サービス名とエンドポイント名の設定が他のエンドポイントと重複しないようにしてください。

HTTPに関する設定項目
表2.9.9.2-2
設定項目
説明

HTTP BCの設定
外部HTTPサーバの
   エンドポイントURL
外部のHTTPサーバアクセスするためのURLを指定します。
【マルチバイト文字列指定可】
文字列(URL)[必須]
   ※プロバイダの場合のみ
外部に公開する
   エンドポイントURL
HTTPクライアントからアクセスするためのURLを設定します。
【マルチバイト文字列指定可】
文字列(URL)[必須]
   ※コンシューマの場合のみ
他のコンシューマの設定と重複しないようにしてください。
停止時に返却するエラーメッセージのタイプ
HTTP BCのSUが STOP または SHUTDOWN 状態のときにクライアントに返却するメッセージのタイプを選択します。
空、500 Internal Server Error(HTML)、500 Internal Server Error(SOAP Fault)、503 Service Unavailableから選択[任意]
   デフォルトは"500HTML"
圧縮して送受信する
Gzipの形式でリクエストやレスポンスを送受信するかを設定します。
下記の値から選択。[任意]
  • request
  • response
  • both
  • none
デフォルト値:none
   ※プロバイダの場合のみ
Expect-Continueハンドシェイクを行う
エンドポイント単位でプロバイダがexpect-continue handshakeをサポートするかどうかを指定します。
下記の値から選択。[任意]
  • true
  • false
デフォルト値:false
   ※プロバイダの場合のみ
コネクションを再利用する
コネクションを再利用するかどうかを指定します。
下記の値から選択。[必須]
  • true
  • false
  • 自動
デフォルト値:自動
   ※プロバイダの場合のみ
コネクション再利用時に状態をチェックする
コネクション再利用時にそのコネクションが有効であるかをチェックするかどうかを指定できます。
   [コネクションを再利用するにtrueを選択した場合のみ設定可能]
下記の値から選択。[任意]
  • true
  • false
デフォルト値:true
   ※プロバイダの場合のみ
タイムアウト
Keep-Aliveの有効時間。0の場合、Long.MAX_VALUEミリ秒とします。
   [コネクションを再利用するにtrueを選択した場合のみ設定可能]
数値(0〜9223372036854775)[任意]
単位:秒
デフォルト値:0
   ※プロバイダの場合のみ
TCP_NODELAYを有効にする
TCP_NODALAYソケットオプションを有効にするかどうかを指定します。
下記の値から選択。[任意]
  • true
  • false
デフォルト値:true
   ※プロバイダの場合のみ
送受信バッファサイズ
Socketのメッセージ送受信bufferサイズを指定します。
数値(0〜2147483647)[任意]
単位:バイト
デフォルト値:1024
   ※プロバイダの場合のみ
接続タイムアウト
外部サーバへ接続を確立する際のタイムアウト時間を指定します。0の場合、タイムアウト時間は無制限です。
数値(0〜2147483)[任意]
単位:秒
デフォルト値:0
   ※プロバイダの場合のみ
読み取りタイムアウト
外部サーバのレスポンスを読み取りタイムアウト時間を指定します。0の場合、タイムアウト時間は無制限です。
数値(0〜2147483)[任意]
単位:秒
デフォルト値:0
   ※プロバイダの場合のみ

「停止時に返却するエラーメッセージのタイプ」を"500 Internal Server Error(SOAP Fault)"に設定した場合、以下のフォーマットのSOAP Faultメッセージをクライアントに返却します。

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
      <faultcode>SOAP-ENV:Server</faultcode>
      <faultstring>{エンドポイント名} is in {shutdown, or stop} state.</faultstring>
      <detail>
        <httpbc:endpoint xmlns:httpbc="http://www.nec.co.jp/WebOTX/ns/jbi/component/http/fault">
          <httpbc:name>{エンドポイント名}</httpbc:name>
          <httpbc:state>{shutdown, or stop}</httpbc:state>
        </endpoint>
      </detail>
    </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
※ 妥当性チェックを行うため、問題がある項目名が赤色となり、正しく修正すると、項目名が黒くなります。 詳細は、2.8. 妥当性チェックを参照してください。
※ コンシューマでエンドポイントロールを指定する場合、参照をクリックすると、SU-エンドポイント一覧 ダイアログが表示されます。このダイアログを利用して、カレントサービスアセンブリプロジェクトに存在しているサービスユニットに関するサービス名やインタフェース名などの情報を再利用できます。


図2.9.9.2-2

2.9.9.3. オペレーション設定

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


図2.9.9.3-1

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

オペレーション名
エンドポイントロールがプロバイダの場合、エンドポイントが提供するオペレーション名を指定します。
   エンドポイントロールがコンシューマの場合呼び出し先となるエンドポイントのオペレーション名を指定します。
QName(名前空間、ローカル名)
   [必須]
ヘッダ転送
HTTPメッセージのヘッダを次のエンドポイントへ転送するかどうか、また外部のHTTPクライアント/サーバに転送するかどうか指定します。既定値はfalseです。
true、falseから選択[任意]
   デフォルトは"false"
メッセージ交換方式
使用するメッセージ交換方式を指定します。
   コンシューマの場合、プロバイダの提供するメッセージ交換方式を指定してください。
in-only、 in-out、robust-in-onlyから選択 [必須]
スキーマファイル インプット/アウトプット 対象SUフォルダのMETA-INFフォルダのschemaフォルダ配下にあるスキーマファイルの相対パスを指定します。
指定したスキーマファイルは、後述のインプット検証/アウトプット検証を選択することで実行時のメッセージ検証に利用することができます。
選択しなかった場合も、XSLT SE による変換の定義の際のインプット/アウトプットスキーマとして利用することができます。    [メッセージ交換方式を指定した場合のみ設定可能]
参照
(インプット/アウトプット)
スキーマファイルの選択ダイアログを開きます。
スキーマファイルを選択すると、その相対パスがインプットおよびアウトプットのファイルのテキストボックスに表示されます。
利用方法については、[2.7.7. スキーマファイルの設定] を参照して下さい。
 
検証実行 インプットの検証実行 実行時に、インプットで指定したスキーマファイルでのメッセージの検証を実施します。
   選択時には、スキーマファイルのインプットの指定は必須項目となります。
   [メッセージ交換方式を指定した場合のみ設定可能]
デフォルトは非選択 [任意]
アウトプットの検証実行 実行時に、アウトプットで指定したスキーマファイルでのメッセージの検証を実施します。
   選択時には、スキーマファイルのアウトプットの指定は必須項目となります。
   [メッセージ交換方式を指定した場合のみ設定可能]
デフォルトは非選択 [任意]
オペレーション
   ロケーション
該当オペレーションを識別するユニークな定義です。同じエンドポイントの別のオペレーションと違う文字列を指定してください。 HTTP BCのInboundは、リクエストURLからオペレーションロケーション文字列を取得し、対応するオペレーションを判断します。
   例として、外部に公開するエンドポイントURLが「http://localhost:80/httpbc」、オペレーションロケーションが「sample1」の場合、 実際にそのオペレーションを呼び出すためのリクエストURLは「http://localhost:80/httpbc/sample1」となります。
【マルチバイト文字列指定可】
任意の文字列[必須]
入力メッセージの
   タイプ
入力メッセージのタイプを指定します。
   コンシューマの場合、外部HTTPクライアントから受信したメッセージを NMR に送信する際のメッセージのタイプを指定します。xmlを設定した場合、HTTPクライアントから受信したメッセージのコンテントタイプがtext/xmlではないと、エラーレスポンスを返信します。
   プロバイダの場合、 NMR から受信したメッセージを外部HTTPサーバに送信する際のメッセージのタイプを指定します。
xml、attachmentから選択[任意]
   デフォルトは"xml"
出力メッセージの
   タイプ
出力メッセージのタイプを指定します。
   コンシューマの場合、 NMR から受信したメッセージを外部HTTPクライアントに送信する際のメッセージのタイプを指定します。
   プロバイダの場合、外部HTTPサーバから受信したメッセージを NMR に送信する際のメッセージのタイプを指定します。xmlを設定した場合、HTTPサーバから受信したメッセージのコンテントタイプがtext/xmlではないと、 NMR にエラーを返信します。
xml、attachmentから選択[任意]
   デフォルトは"xml"
入力メッセージの
   エンコーディング
入力メッセージのエンコーディングを指定します。
   コンシューマの場合、外部HTTPクライアントから受信したメッセージを NMR に送信する際のメッセージのエンコーディングを指定します。HTTPクライアントから受信したメッセージのエンコーディングは設定値と一致しないと、エラーレスポンスを返信します。
   プロバイダの場合、 NMR から受信したメッセージを外部HTTPサーバに送信する際のメッセージのエンコーディングを指定します。 NMR から受信するメッセージに対して設定値へのコード変換をします。
下記の値から選択[任意]:
   UTF-8
   UTF-16
   ISO-8859-1
   EUC-JP
   Shift_JIS
   ISO-2022-JP
   BIG5
   GB2312
   None

   デフォルトは"UTF-8"
入力メッセージのエンコーディング
変換時にXML宣言を更新する
XML宣言中の文字エンコードの指定を入力メッセージのエンコーディングに合わせて変更するかどうか、または省略するかどうかを指定します。
下記の値から選択[任意]:
   true
   false
   omit

   デフォルトは"true"
出力メッセージの
   エンコーディング
出力メッセージのエンコーディングを指定します。
   コンシューマの場合、 NMR から受信したメッセージを外部HTTPクライアントに送信する際のメッセージのエンコーディングを指定します。 NMR から受信するメッセージに対して設定値へのコード変換をします。
   プロバイダの場合、外部HTTPサーバから受信したメッセージを NMR に送信する際のメッセージのエンコーディングを指定します。HTTPサーバから受信したメッセージのエンコーディングは設定値と一致しないと、 NMR にエラーを返信します。
下記の値から選択[任意]:
   UTF-8
   UTF-16
   ISO-8859-1
   EUC-JP
   Shift_JIS
   ISO-2022-JP
   BIG5
   GB2312
   None

   デフォルトは"UTF-8"
出力メッセージのエンコーディング
変換時にXML宣言を更新する
XML宣言中の文字エンコードの指定を出力メッセージのエンコーディングに合わせて変更するかどうか、または省略するかどうかを指定します。
下記の値から選択[任意]:
   true
   false
   omit

   デフォルトは"true"
クッキーを転送する クッキーを伝播するかどうかを指定します。
SOAP BC或いはSalesforce BCとの組み合わせで使用可能です。
下記の値から選択します。[任意]
   true
   false

   デフォルトは"false"
Chunkedで送受信する chunkedで送返信するかどうかを指定します。 SUエディタでの表示は以下です。[任意] デフォルト値は自動です。
   true
   false
   自動
設定される値はそれぞれ以下です。デフォルト値はoptimizeです。
   true
   false
   optimize
Content-Type コンシューマの場合のInboundのレスポンスのcontent-typeを指定します。
プロバイダの場合のOutboundのリクエストのcontent-typeを指定します。
content-typeの設定値は開発環境の選択リストから選択できるて、直接入力もできます。
ESB内部にはユーザが入力した内容を特別にチェックしないで、nullではなくて、trim()後“”ではない内容は正しいとします。 その内容はそのままに転送されます。
SUエディタでの表示は以下です。[任意] デフォルト値は自動です。
   自動
   text/xml
   text/html
   text/plain
   text/css
   application/soap+xml
   application/x-www-form-urlencoded
   application/octet-stream
設定される値はそれぞれ以下です。デフォルト値はoriginalです。
   original
   text/xml
   text/html
   text/plain
   text/css
   application/soap+xml
   application/x-www-form-urlencoded
   application/octet-stream
リダイレクトに従う リダイレクトをサポートするかどうかを指定します。
※Outbound側のみに設定ができます。
下記の値から選択します。[任意]
   true
   false

   デフォルトは"false"
クエリ文字列を転送する Inboundから受け取ったQuery StringをアクセスするURLに付与するかどうかを指定します。
デフォルトはtrueです。クライアントから受信する時、あれば、必ずノーマライズします。
SOAP BC或いはSalesforce BCとの組み合わせで使用可能です。 ※Outbound側のみに設定ができます。
下記の値から選択します。 [任意]
   true
   false

   デフォルトは"true"
相対パスを有効にする Inboundから受け取った相対パスをアクセスするURLに付与するかどうかを指定します。
デフォルトはfalseです。クライアントから受信する時、あれば、必ずノーマライズします。
SOAP BC或いはSalesforce BCとの組み合わせで使用可能です。 ※Outbound側のみに設定ができます。
下記の値から選択します。[任意]
   true
   false

   デフォルトは"false"
リクエストメソッド プロバイダーの場合、RESTで扱えるHTTPメソッドを追加し、同時にオペレーション毎に設定できるようにします。
HTTPリクエストメソッド(GET/POST/PUT/HEAD/DELETE/自動)を指定します。
自動に設定された場合、Inboundから転送してきたメソッドを使います。(InboundがHTTPBC以外の場合はPOSTとします。)
※Outbound側のみに設定ができます。
下記の値から選択します。[任意]
   GET
   POST
   PUT
   HEAD
   DELETE
   自動

   デフォルトは"自動"

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

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


図2.9.9.4-1

表2.9.9.4-1
項目
説明

エンドポイント名のURL表記
エンドポイントをURL表記した値。リソース管理に用いられます。
http://webotxesb/<BC名>/エンドポイント名
省略した場合、ESB内部で自動生成されます。
エンドポイントの認証の設定
OFFにした場合はエンドポイントの認証を行いません。
 
エンドポイントのID
認証に利用するIDを設定します。
文字列
パスワード
認証に利用するパスワードを設定します。パスワードは暗号化とします。
文字列
ログインモジュールの設定を行う
ログインモジュールの設定を行います。
任意の文字列[任意]
  • ESBSECUREMASTERRealm
  • ESBDefaultCustomRealm
デフォルト値:ESBSECUREMASTERRealm
エンドポイントの認可の設定
OFFにした場合はエンドポイントの認可を行いません。
 
認可に用いる認証情報
認可に利用する認証情報を設定します。
コンシューマの場合
  • client
  • consumer
プロバイダの場合
  • client
  • consumer
  • provider
Principalの識別子
Principalの識別子を設定します。
任意の文字列[任意]
認証情報を伝播する
クライアント側の認証情報の伝播の設定です。OFFにした場合は、伝播を行いません。
Consumerのみ
Basic認証(Principalの識別子: basic)
basicのみをサポートします。
basic。このチェックボックスをチェックすると、id属性=basic
認証済情報を伝播する
認証済情報の伝播の設定です。OFFにした場合は、伝播を行いません。
Consumerのみ
Basic認証(Principalの識別子: basic)
basicをサポートします。
basic。このチェックボックスをチェックすると、id属性=basic
ESBセキュリティ基盤によるクライアント認証(Principalの識別子: esb)
esbをサポートします。
esb。このチェックボックスをチェックすると、id属性=esb
SSL 認証(Principalの識別子: ssl)
sslをサポートします。
ssl。このチェックボックスをチェックすると、id属性=ssl
ESBセキュリティ基盤によるクライアント認証
クライアント認証を設定します。
Consumerのみ
参照するクライアントの認証情報
必要に応じて許容する値を変更します。
basic。
ログインモジュールの設定を行う
ログインモジュールの設定を行います。
任意の文字列[任意]
  • ESBSECUREMASTERRealm
  • ESBDefaultCustomRealm
デフォルト値:ESBSECUREMASTERRealm
外部サービスの認証
OFFにした場合は認証を行いません。
outboundのみ

外部サービスの認証を ON にし、設定 をクリックすると、外部サービスの認証ダイアログが表示されます。


図2.9.9.4-2

表2.9.9.4-2
項目
説明

Basic 認証の設定
外部サービスまでのbasic認証を使用します。
 
クライアントから受信した認証ヘッダを使う
client InboundでノーマライズされたHTTPヘッダを使用する InboundでノーマライズされたHTTPヘッダを使用します。
true。この要素が選択される時、固定値とはtrueです。
その他設定
その他を設定します。
 
Digest 認証の設定
外部サービスまでのdigest認証を使用します。
 
クライアントから受信した認証ヘッダを使う
client InboundでノーマライズされたHTTPヘッダを使用する InboundでノーマライズされたHTTPヘッダを使用します。
true。この要素が選択される時、固定値とはtrueです。
Realm名
「digest」に「credential」あるいは「ep-password」あるいは[principal]を選択する時、このelementが設定できます。
任意の文字列[任意]。デフォルト値:hoge.com
OAuth認証の設定
OAuth認証の設定を行います。
 
Realm名
「digest」に「credential」あるいは「ep-password」あるいは[principal]を選択する時、このelementが設定できます。
任意の文字列[任意]。デフォルト値:hoge.com
設定したConsumer情報のみを用いてアクセストークンを取得する
Consumer情報の設定を用いることを示します。
 
伝播されたアクセストークンのみを利用する
MEプロパティに伝播されたOAuthのアクセストークンを用いることを示します。
 
設定したConsumer情報と伝播されたアクセストークンの両方を利用する(伝播されたアクセストークン優先)
Consumer情報の設定と伝播されたOAuthアクセストークンの両方を用いることを示します。
 
Access token URL
OAuthアクセストークン要求先のリクエストURLを設定します。
文字列(URI)[必須]。
Consumer Key
ConsumerとSP間で交換されたConsumerを識別するIDです。
任意の文字列[必須]。
Consumer Secret
ConsumerとSP間で交換されたConsumer Secretの値です。
文字列[任意]。暗号化します。
秘密鍵名
署名を行う際の秘密鍵の名前です。
文字列[任意]。
秘密鍵パスワード
署名を行う際の秘密鍵のパスワードです。
文字列[任意]。暗号化します。
署名方法
リクエストに対して署名する方法を設定します。
選択肢:[必須]
  • HMAC-SHA1
  • RSA-SHA1
  • PLAINTEXT
デフォルト値:HMAC-SHA1
認証情報を選択する
認証情報を選択します。
 
アクセストークンを伝播する
MEプロパティにアクセストークンを含むOAuthPrincipalを伝播するかどうかを選択します。
選択肢:[必須]
  • true
  • false
デフォルト値:false
アクセストークンをキャッシュする
アクセストークンを含むOAuthPrincipalをエンドポイントに保持するかどうかを選択します。
選択肢:[必須]
  • true
  • false
デフォルト値:true
アクセストークンの最大キャッシュ数
アクセストークンをエンドポイントに保持する場合の最大キャッシュ数です。
数値(0〜2147483647)[必須]
デフォルト値:1000

設定 をクリックすると、認証情報設定ダイアログが表示されます。


図2.9.9.4-3

表2.9.9.4-3
項目
説明

外部サービス用認証情報を設定する
外部サービス用認証情報を設定します。
 
ユーザID
認証に利用するidを設定します。
文字列[必須]
パスワード
認証に利用するパスワードを設定します。
文字列[必須]、暗号化します。
エンドポイント用認証情報を利用する
エンドポイント用認証情報を利用します。
true
クライアントの認証情報を利用する
クライアントの認証情報を利用します。
 
Principalの識別子
Principalの識別子を設定します。
任意の文字列[必須]

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

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

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

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

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

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

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

[2.7.5. オプション一覧の設定] を参照して下さい。
HTTP BCにおいて設定できるオプション一覧は下記の通りです。
表2.9.9.8-1
項目
説明

XML_Declaration_Consistency
文字コード変換を行う時のXML宣言の操作(付与・削除・変更)を指定します。
true/false/omit
XML_Format_Input
XML宣言のencoding変更を行うか否かを指定します。
true/false
MaxRequestCount
エンドポイント単位で同時処理できる最大リクエスト数を設定します。
0にした場合は無制限となります。この設定はコンシューマでのみ有効です。
0-214748
ExceedRequestTimeout
同時処理できる最大リクエスト数を超えた場合の最大待ち時間を設定します(秒)。
この設定はコンシューマでのみ有効です。
-1-214748
AUTHORIZE_SKIP
エラーリトライ時に認証処理をスキップするか否かを指定します。
true/false

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

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

2.9.9.10. メッセージコンバートハンドラの設定

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

2.9.9.11. メッセージ交換方式(MEP)とHTTPステータスコード/コンテントタイプ

メッセージ交換方式(MEP)については[ 製品構成と提供機能 > 3. JBI仕様 > 3.2. Normalized Message Router ] の 「メッセージ交換方式(MEP)」をご覧下さい。
Outbound
HTTP BCの Outboundでは、設定されたMEP、設定されたメッセージタイプ、外部WebサーバからのレスポンスにおけるHTTPレスポンスコードとコンテントタイプという四つの条件によって、外部Webサーバからのレスポンスの処理方法が変化します。
表2.9.9.11-1
MEP
タイプ
動作の説明
In-Only
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをHTTPリクエストに変換して、エンドポイントで定義された外部HTTPサーバに送信し、HTTPサーバからのErrorかdoneに相当するレスポンスメッセージを待ち合わせます。
応答(done)
HTTPサーバからdone/Errorを示すHTTPレスポンス(※)を受信すると、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
Errorを示すHTTPレスポンスを受信するときエラーログを出力します。
   ※doneを示すHTTPレスポンスの情報
   ・出力メッセージのタイプをxmlとした場合:コンテントタイプがtext/xml、HTTPステータスが200系
   ・出力メッセージのタイプをattachmentとした場合:HTTPステータスが200系
   ※Errorを示すHTTPレスポンス
   ・doneを示すHTTPレスポンス以外のもの
Robust-In-Only
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをHTTPリクエストに変換して、エンドポイントで定義された外部HTTPサーバに送信し、HTTPサーバからのFaultかErrorかdoneに相当するレスポンスメッセージを待ち合わせます。
応答(Fault)
HTTPサーバからFaultを示すHTTPレスポンスメッセージ(※)を受信すると、変換したFaultデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※Faultを示すHTTPレスポンスの情報
   ・出力メッセージのタイプをxmlとした場合:コンテントタイプがtext/xml、HTTPステータスが200系ではない
   ・出力メッセージのタイプをattachmentとした場合:HTTPステータスが200系ではない
応答(done)
HTTPサーバからdoneを示すHTTPレスポンスメッセージ(※)を受信すると、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   ※doneを示すHTTPレスポンスメッセージの情報
   ・出力メッセージのタイプをxmlとした場合:コンテントタイプがtext/xml、HTTPステータスが200系
   ・出力メッセージのタイプをattachmentとした場合:HTTPステータスが200系
応答(Error)
HTTPリクエストの送信に失敗したときにErrorとなります。例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
In-Out
要求
NMR から受け付けたメッセージエクスチェンジに格納されたInメッセージをHTTPリクエストに変換して、エンドポイントで定義されたHTTPサーバに送信し、HTTPサーバからのoutかFaultかErrorに相当するレスポンスメッセージを待ち合わせます。
応答(out)
HTTPサーバからoutを示すHTTPレスポンスメッセージ(※)を受信すると、変換したoutデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※outを示すHTTPレスポンスメッセージの情報
   ・出力メッセージのタイプをxmlとした場合:コンテントタイプがtext/xml、HTTPステータスが200系
   ・出力メッセージのタイプをattachmentとした場合:HTTPステータスが200系
応答(Fault)
HTTPサーバからFaultを示すHTTPレスポンスメッセージ(※)を受信すると、変換したFaultデータを格納したメッセージエクスチェンジを NMR に返却します。この後、 NMR からDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
   ※Faultを示すHTTPレスポンスの情報
   ・出力メッセージのタイプをxmlとした場合:コンテントタイプがtext/xml、HTTPステータスが200系ではない
   ・出力メッセージのタイプをattachmentとした場合:HTTPステータスが200系ではない
応答(Error)
HTTPリクエストの送信に失敗したときにErrorとなります。例外メッセージを格納したメッセージエクスチェンジを NMR に返却します。
In-Optional-Out
--
(HTTP BCでは対応しません。)
Inbound
WebOTX ESBのHTTPサーバ機能では、JBIコンポーネントとしてのMEPの設定が、外部に公開するWebサーバとしてのメッセージ交換方式に連動し、外部HTTPクライアントへのレスポンス処理方法が変化します。
表2.9.9.11-2
MEP
タイプ
動作の説明
In-Only
要求
エンドポイントで定義されたURLからHTTPリクエストを受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのERRORかDONEステータスが設定されたメッセージエクスチェンジを待ち受けます。
HTTPクライアントから送信してきたHTTPリクエストのチェックに失敗した場合、NMRへメッセージを転送しなくて、エラーを示すHTTPレスポンス(※)をHTTPクライアントに返します。
   ※異常系メッセージ(Fault/Error)のHTTP BCのエラーコード一覧を参照
応答(done)
NMR からDONEステータスが設定されたメッセージエクスチェンジを受信すると、HTTPクライアントへdoneを示すレスポンスメッセージ(※)を返信します。
   ※HTTPレスポンスメッセージの情報
   ・HTTPステータス
      202
応答(error)
NMR からERRORステータスが設定されたメッセージエクスチェンジを受信すると、エラーログを出力して、HTTPクライアントへdoneを示すレスポンスメッセージ(※)を返信します。
   ※doneを示すレスポンスメッセージの情報
   ・HTTPステータス
      202
Robust-In-Only
要求
エンドポイントで定義されたURLからHTTPリクエストを受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのFault/Error/doneのメッセージエクスチェンジを待ち受けます。
HTTPクライアントから送信してきたHTTPリクエストのチェックに失敗した場合、NMRへメッセージを転送しなくて、エラーを示すHTTPレスポンス(※)をHTTPクライアントに返します。
   ※異常系メッセージ(Fault/Error)のHTTP BCのエラーコード一覧を参照
応答(Fault)
NMR から受け付けたメッセージエクスチェンジに格納されたFaultデータをHTTPレスポンスメッセージ(※)に変換して、HTTPクライアントに送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   ※HTTPレスポンスメッセージの情報
   ・HTTPステータス
      OutboundがHTTP BCの場合:OutboundのHTTPステータス
      OutboundがHTTP BCではない場合:500
   ・HTTPボディ
      OutboundがHTTP BCの場合:OutboundのHTTPボディ
      OutboundがHTTP BCではない場合:Faultメッセージの内容
応答(done)
NMR からdoneのメッセージエクスチェンジを受信すると、done相当のHTTPレスポンスメッセージ(※)をHTTPクライアントに送信します。
   ※レスポンスメッセージの情報
   ・HTTPステータス
      200
   ・HTTPボディ
      なし
応答(error)
NMR からErrorのメッセージエクスチェンジを受信すると、Error相当のHTTPレスポンスメッセージ(※)をHTTPクライアントに送信します。
   ※レスポンスメッセージの情報
   ・HTTPステータス
      500
   ・HTTPボディ
      例外のメッセージ
In-Out
要求
エンドポイントで定義されたURLからHTTPリクエストを受信すると、変換したInメッセージを格納したメッセージエクスチェンジを NMR に送信し、 NMR からのout/Fault/Errorのメッセージエクスチェンジを待ち受けます。
HTTPクライアントから送信してきたHTTPリクエストのチェックに失敗した場合、NMRへメッセージを転送しなくて、エラーを示すHTTPレスポンス(※)をHTTPクライアントに返します。
   ※異常系メッセージ(Fault/Error)のHTTP BCのエラーコード一覧を参照
応答(out)
NMR から受け付けたメッセージエクスチェンジに格納されたoutデータをHTTPレスポンスメッセージ(※)に変換して、HTTPクライアントに送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   ※HTTPレスポンスメッセージの情報
   ・HTTPステータス
      OutboundがHTTP BCの場合:OutboundのHTTPステータス
      OutboundがHTTP BCではない場合:200
   ・HTTPボディ
      Outboundの内容
応答(Fault)
NMR から受け付けたメッセージエクスチェンジに格納されたFaultデータをHTTPレスポンスメッセージ(※)に変換して、HTTPクライアントに送信し、DONEステータスを設定したメッセージエクスチェンジを NMR に返却します。
   ※HTTPレスポンスメッセージの情報
   ・HTTPステータス
      OutboundがHTTP BCの場合:OutboundのHTTPステータス
      OutboundがHTTP BCではない場合:500
   ・HTTPボディ
      OutboundがHTTP BCの場合:OutboundのHTTPボディ
      OutboundがHTTP BCではない場合:Faultメッセージの内容
応答(Error)
NMR からErrorのメッセージエクスチェンジを受信すると、Error相当のHTTPレスポンスメッセージ(※)をHTTPクライアントに送信します。
   ※レスポンスメッセージの情報
   ・HTTPステータス
      500
   ・HTTPボディ
      例外のメッセージ
In-Optional-Out
--
(HTTP BCでは対応しません。)
Inbound
WebOTX ESBのHTTPサーバ機能では、JBIコンポーネントとしてのMEPの設定が、外部に公開するWebサーバとしてのメッセージ交換方式に連動し、外部HTTPクライアントへのレスポンス処理方法が変化します。
表2.9.9.11-3
MEP
HTTPステータス
HTTPにおける対応
In-Only
202
HTTPメッセージを正常に受信した場合、HTTPステータス202のみを返します。この通知は、受け取ったことの通知であって、受け取ったあとの処理の可否についての情報は一切含みません。One-way、または擬似的な非同期に相当します。
Robust-In-Only
200
HTTPメッセージを正常に受信し、受け取った後のJBIコンテナ側の処理がすべて成功した場合、HTTPステータス200で内容を持たないHTTPメッセージを返します。
200系以外
HTTPメッセージを受け取った後のJBIコンテナ側の処理でFaultメッセージを返した場合、その内容のままHTTPメッセージをHTTPクライアントに返信します。
   FaultメッセージにHTTP_STATUSプロパティがなければ、500レスポンスをHTTPクライアントに返信します。
In-Out
200系
受信したメッセージをJBIコンテナ側で処理し、すべて成功した場合、そのレスポンスメッセージを返します。
200系以外
HTTPメッセージを受け取った後のJBIコンテナ側の処理でFaultメッセージを返した場合、その内容のままHTTPメッセージを返します。
   FaultメッセージにHTTP_STATUSプロパティがなければ、500レスポンスをHTTPクライアントに返信します。
In-Optional-Out
-
(HTTP BCでは対応しません。)

2.9.9.12. ノーマライズ規則

Outbound
NMR から受け取ったメッセージエクスチェンジを外部Webサーバに送信するHTTPリクエストメッセージに変換することをデノーマライズといいます。また、外部Webサーバから受信したHTTPレスポンスメッセージを NMR に送信するメッセージエクスチェンジに変換することをノーマライズといいます。
デノーマライズ規則


図2.9.9.12-1

デノーマライズの規則は上図のようになっています。ノーマライズメッセージにHTTP _METHOD、HTTP_VERSION、HTTP_QUERY、HTTP_HEADERを示すキーがあった場合、その値をHTTPメッセージに挿入します。また、エンドポイントのオペレーション設定に入力メッセージのタイプ をattachmentとすることで、添付ファイルをHTTPメッセージのボディにそのまま挿入できます。xmlに設定するとメッセージコンテントがHTTPメッセージのボディに挿入されます。
Outbound に送信されたメッセージエクスチェンジのフォーマットにエラーがあった場合、外部WebサーバへのリクエストをせずErrorを NMR に返却します。
ノーマライズ規則


図2.9.9.12-2

ノーマライズ規則は上図のようになっています。HTTPレスポンスのStatus-code/Reason-Phrase/Message-Headerは、ノーマライズメッセージのプロパティに既定のキーの値として挿入されます。HTTPボディの内容はエンドポイントのオペレーション設定の出力メッセージのタイプの値(xmlまたはattachment)により、そのままメッセージコンテントあるいは添付ファイルとなります。外部のHTTPサーバから200系以外のHTTPレスポンスが返ってきた場合、出力メッセージのタイプをxmlとすると、HTTPボディの内容がFaultメッセージのメッセージコンテントにセットされて、attachmentとすると、HTTPボディの内容がFaultメッセージの添付ファイルにセットされます。
Inbound
ノーマライズ規則


図2.9.9.12-3

ノーマライズ規則は上図のようになっています。HTTPリクエストのMethod/Version/Query/Message-Headerの内容は、ノーマライズメッセージのプロパティにに既定のキーの値として挿入されます。HTTPボディの内容はエンドポイントのオペレーション設定の入力メッセージのタイプの値(xmlまたはattachment)により、そのままメッセージコンテントあるいは添付ファイルとなります。
デノーマライズ規則


図2.9.9.12-4

デノーマライズの規則は上図のようになっています。ノーマライズメッセージにHTTP_STATUS/HTTP_REASON/HTTP_HEADERを示すキーがあった場合、その値をHTTPメッセージに挿入します。また、エンドポイントのオペレーション設定の出力メッセージのタイプの値(xmlまたはattachment)により、メッセージコンテントあるいは添付ファイルはHTTPメッセージのボディにそのまま挿入されます。
Faultメッセージがあった場合、出力メッセージのタイプをxmlとすると、メッセージコンテントのdetailの内容がHTTPメッセージのボディとされて、attachmentとすると、添付ファイルの内容がHTTPメッセージのボディとされます。

2.9.9.13. 異常系メッセージ

WebOTX ESBにおいて「HTTP BCに誤ったメッセージが入力された」、「サービス呼び出しに失敗した」等の異常が発生した場合、HTTP BCのInboundからクライアントアプリケーションに400/500系のHTTPメッセージが返却されます。 クライアントアプリケーションでは返却されたHTTPメッセージから発生した異常の内容を知ることができます。 以下では、発生する異常の種類ごとのHTTP BCのInboundからクライアントアプリケーションに返却するメッセージを説明します。

異常の種類により Fault または Error に分類されます。 以下がHTTP BCにおいて異常が発生するパターンの一覧です。 [ リファレンス集 開発編(Enterprise Service Bus) > 2. 異常系メッセージ(Fault/Error) > 2.1. バインディングコンポーネント > 2.1.9. HTTP BC ]

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

HTTP BCのプロバイダエンドポイントが100/200系以外のHTTPレスポンスを受け取ると、 HTTP BCのInboundにはFaultが通知され、 クライアントアプリケーションにはプロバイダエンドポイントが受け取ったHTTPレスポンスがそのまま通知されます。

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

HTTP BC以外のプロバイダエンドポイントから Fault を受け取った場合、 HTTP BCのInboundで受け取ったFault形式のメッセージをHTTPボディとし、クライアントアプリケーションに返信します。 以下はHTTP BCがUserProcessor SEから Fault メッセージを受け取った場合の例です。

500 Internal Server Error

<?xml version="1.0" encoding="utf-8"?>
<esb-fault xmlns="http://www.nec.com/WebOTX/jbi/fault/"><exchangeid>1339761259369-00000014</exchangeid><date>2012-06-15T19:54:19.369+08:00</date><component>UserProcessorEngine</component><service-assembly>http-user-fault</service-assembly><service-unit>UserProSU_http-user-fault_002</service-unit><service-name xmlns:ns2="http://aaa">ns2:ep_http-user-fault_002</service-name><endpoint>ep_http-user-fault_002</endpoint><role>PROVIDER</role><string>ユーザプロセサがフォールトメッセージを送信します。</string><detail><a xmlns="" xmlns:ns2="http://www.nec.com/WebOTX/jbi/fault/">User Fault</a></detail></esb-fault>

プロバイダエンドポイントがErrorを返却した場合
「同時処理最大リクエスト数」を超えてタイムアウトした場合
外部HTTPクライアントから送信されたHTTPリクエストのチェックに失敗した場合

メッセージ内容は400/500系のHTML形式の文書です。 以下はHTTP BCのプロバイダエンドポイントが外部Webサーバに接続できない場合の例です。 コンシューマエンドポイントに Error が通知され、クライアントアプリケーションへ以下のメッセージが返信されます。

500

<html><head><title>WebOTX 8.XX.XX.XX - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTPステータス 500 - com.nec.webotx.jbi.exception.WebOTXESBExceptionImpl: javax.jbi.JBIException: 外部サービス呼び出しでエラーが発生しました。
ESB Exception message
Message ID: 1339756714662-00000001
Date      : Fri Jun 15 18:38:37 CST 2012
Component : HTTPBinding
String    : 外部サービス呼び出しでエラーが発生しました。
ServiceAssembly:http-http
ServiceUnit    :HTTPSU_http-http_001
ServiceName    :{http://www.necas.nec.com.cn}ep_http-http_001
EndpointName   :ep_http-http_001
</h1><HR size="1" noshade="noshade"><p><b>type</b> ステータスレポート</p><p><b>メッセージ</b> <u>com.nec.webotx.jbi.exception.WebOTXESBExceptionImpl: javax.jbi.JBIException: 外部サービス呼び出しでエラーが発生しました。
ESB Exception message
Message ID: 1339756714662-00000001
Date      : Fri Jun 15 18:38:37 CST 2012
Component : HTTPBinding
String    : 外部サービス呼び出しでエラーが発生しました。
ServiceAssembly:http-http
ServiceUnit    :HTTPSU_http-http_001
ServiceName    :{http://www.necas.nec.com.cn}ep_http-http_001
EndpointName   :ep_http-http_001
</u></p><p><b>説明</b> <u>The server encountered an internal error (com.nec.webotx.jbi.exception.WebOTXESBExceptionImpl: javax.jbi.JBIException: 外部サービス呼び出しでエラーが発生しました。
ESB Exception message
Message ID: 1339756714662-00000001
Date      : Fri Jun 15 18:38:37 CST 2012
Component : HTTPBinding
String    : 外部サービス呼び出しでエラーが発生しました。
ServiceAssembly:http-http
ServiceUnit    :HTTPSU_http-http_001
ServiceName    :{http://www.necas.nec.com.cn}ep_http-http_001
EndpointName   :ep_http-http_001
) that prevented it from fulfilling this request.</u></p><HR size="1" noshade="noshade"><h3>WebOTX 8.XX.XX.XX</h3></body></html>

HTTP BCが起動していない場合の例です。

503 HTTPBinding not started.

<html><head><title>WebOTX 8.XX.XX.XX - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTPステータス 503 - HTTPBinding not started.</h1><HR size="1" noshade="noshade"><p><b>type</b> ステータスレポート</p><p><b>メッセージ</b> <u>HTTPBinding not started.</u></p><p><b>説明</b> <u>The requested service (HTTPBinding not started.) is not currently available.</u></p><HR size="1" noshade="noshade"><h3>WebOTX 8.XX.XX.XX</h3></body></html>

HTTP BCのコンシューマに設定する「同時処理最大リクエスト数」を超えてタイムアウトした場合の例です。

503 [Web] 閉塞処理のためタイムアウトが発生しました。

<html><head><title>WebOTX 8.XX.XX.XX - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY
{font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P
{font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 503 - [Web] 閉塞処理のためタイムアウトが発生しました。</h1><HR
size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The requested service ([Web] 閉塞処理のためタイムアウトが発生しました。) is not currently available.</u></p><HR size="1"
noshade="noshade"><h3>WebOTX 8.XX.XX.XX</h3></body></html>

エンドポイントが起動していない、かつエンドポイントのresponse-type-at-closedを500SOAPに設定された場合

500 Internal Server Error

<fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>ep_HTTP_01 is in SHUTDOWN state.</faultstring><detail><soapbc:endpoint xmlns:webot="http://www.nec.co.jp/WebOTX/ns/jbi/component/soap/fault"><soapbc:name>ep_HTTP_01</soapbc:name><soapbc:state>SHUTDOWN</soapbc:state></soapbc:endpoint></detail></fault>

Inboundの認証、認可に失敗した場合

Inboundの認証を行う時参照する認証情報を取得できない場合の例です。

500 Security validate failed

<validate:InvalidErrorMessage xmlns="http://www.nec.com/WebOTX/jbi/fault/" xmlns:validate="http://www.nec.com/WebOTX/jbi/validate">Endpoint Client Authentication is failed: When Endpoint is authenticating, The reference credential can not be acquired.</validate:InvalidErrorMessage>

2.9.9.14. Inboundサーブレット

エンドポイントロールをコンシューマに設定した場合、外部からのリクエストを受け付けてHTTP BCへの橋渡しを行うためのサーブレット(以下 Inboundサーブレット)をWebコンテナに配備する必要があります。
「Inbound Servletを自動で配備する」がONの場合は自動的に配備が行われますが、OFFにした場合は手動でInboundサーブレットを配備する必要があります。アドバンスドモードの場合、InboundサーブレットをESBが動作するプロセスグループに配備してください。
配備方法については、 [ Application Server > ドメイン構築・基本設定ガイド > 5. アプリケーション > 5.4. 配備、再配備と置換 > 5.4.3. Java EEのアプリケーションの配備/再配備 ] を参照してください。
WARファイルの配備
はじめに、WebOTX ESBにインストールされているInboundサーブレット(<WebOTX_DIR>\jbi\components\http配下にあるhttp_inbound_servlet.war)をSUエディタの”外部に公開するエンドポイントURL”で指定したコンテキストルートを指定し、通常のサーブレットと同様にWebコンテナに配備します。
(例)
  外部に公開するエンドポイントURL: http://hostname:8080/sample/service1
  context-root要素の値: sample
  管理者名: admin
  配備コマンド:   otxadmin> deploy --user admin --contextroot sample C:\\WebOTX\\jbi\\components\\http\\http_inbound_servlet.war

Memo
otxadminのloginコマンドでログイン済ならば--userオプションを指定する必要はありません。

HTTP BCのinbound(エンドポイントロールをコンシューマとした場合)は、このサーブレットとサービスアセンブリが両方とも配備され、起動していなければ動作しません。
コンテキストルートを指定しない場合、http_inbound_servlet.warのコンテキストルートがhttpbcとなります。