Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 解説
ここでは,HTTPアダプタのHTTPレスポンスから応答電文への変換の仕組みについて説明します。
サーバから返されたHTTPレスポンスは,次の要素ごとに処理されて,応答電文に格納されます。
各項目の詳細について説明します。
なお,ここで説明する電文の例では,名前空間接頭辞を省略しています。
HTTPレスポンスのステータスラインの要素は次のように応答電文に格納されます。
表2-53 ステータスラインと応答電文の対応
ステータスラインの要素 | 応答電文との対応 |
---|---|
HTTPバージョン | 応答電文には格納されません。 |
ステータスコード | 応答電文(ヘッダ)のstatus-code要素に格納されます。※ |
理由フレーズ | 応答電文(ヘッダ)のreason-phrase要素に格納されます。 |
HTTPアダプタで受信したすべてのHTTPヘッダは応答電文(ヘッダ)のhttp-header要素に格納されます。同一名称のHTTPヘッダを重複して受信した場合はそのまま複数の要素として格納されます。
HTTPレスポンスヘッダの例と対応する応答電文(ヘッダ)を次に示します。
Content-Length: 51 Content-Type: image/gif Last-Modified: Fri, 21 Jul 2006 07:51:32 GMT Accept-Ranges: bytes Server: Microsoft-IIS/6.0 Date: Mon, 16 Jul 2012 09:43:57 GMT |
<http-header-response> <http-header> <Content-Length>51</Content-Length> <Content-Type>image/gif</Content-Type> <Last-Modified>Fri, 21 Jul 2006 07:51:32 GMT</Last-Modified> <Accept-Ranges>bytes</Accept-Ranges> <Server>Microsoft-IIS/6.0</Server> <Date>Mon, 16 Jul 2012 09:43:57 GMT</Date> </http-header> </http-header-response> |
HTTPレスポンスヘッダのContent-TypeヘッダとContent-Dispositionヘッダは応答電文(ヘッダ)の次の要素にも格納されます。
表2-54 Content-TypeヘッダおよびContent-Dispositionヘッダと応答電文(ヘッダ)の対応
HTTPレスポンスヘッダ | 属性 | 応答電文(ヘッダ)に格納される要素 |
---|---|---|
Content-Type | − | http-header-Content-Type要素にContent-Typeヘッダフィールドのメディアタイプ部分(*/*)が格納されます。 |
charset | http-header-Content-Type要素のcharset属性に属性値が格納されます。charset属性の指定がない場合は格納されません。 | |
Content-Disposition | − | HTTPレスポンスで指定があった場合,HTTPレスポンスはファイルデータとして扱われます。Dispositionタイプの値は無視されます。 |
filename | file要素の子要素のfilename要素として値が格納されます。指定値はデコードなどの変換は行われません。 |
応答電文(ヘッダ)に格納される要素は次に示す値だけです。これ以外の値はすべて無視されます。
HTTPレスポンスボディは,HTTPレスポンスヘッダにContent-Dispositionヘッダが指定されているかどうかによって次のように扱われます。
ファイルデータを受信する場合,出力先のディレクトリを要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,またはHTTPアダプタ実行環境共通プロパティファイルで指定する必要があります。プロパティファイルで指定する場合は共通フォルダだけ使用できます。
要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルでのファイルデータの指定個所を次に示します。
表2-55 ファイルデータの指定個所
指定方法 | 指定する要素またはプロパティ | 説明 |
---|---|---|
要求電文(ヘッダ) | request-id要素 | 作業フォルダ用のリクエストIDを設定します。作業フォルダを使用しない場合は省略できます。 |
output-folder-name要素のcommon属性 | ファイルデータの出力先として共通フォルダまたは作業フォルダのどちらかを指定します。 | |
output-folder-name要素 | ファイルデータを出力する共通フォルダ定義名を指定します。作業フォルダを使用する場合は指定を省略できます。 | |
output-sub-folder要素 | ファイルデータの出力先として共通フォルダのサブフォルダを使用する場合に,共通フォルダルートからサブフォルダまでの相対パスを指定します。 | |
HTTPアダプタ実行環境プロパティファイル,HTTPアダプタ実行環境共通プロパティファイル | adphttp.request.output-folder-nameプロパティ | ファイルデータを出力する共通フォルダ定義名を指定します。 |
adphttp.request.output-sub-folderプロパティ | ファイルデータの出力先として共通フォルダのサブフォルダを使用する場合に,共通フォルダルートからサブフォルダまでの相対パスを指定します。 |
要求電文(ヘッダ),HTTPアダプタ実行環境プロパティファイル,およびHTTPアダプタ実行環境共通プロパティファイルのどれにも出力先ディレクトリの指定がなかった場合はエラーになります。
応答電文(ヘッダ)には,出力先ディレクトリおよび出力ファイル名などの情報が格納されます。
応答電文(ヘッダ)に格納されるファイル情報を次に示します。
表2-56 応答電文(ヘッダ)に格納されるファイル情報
応答電文(ヘッダ)の要素 | 説明 |
---|---|
output-folder-name要素のcommon属性 | ファイルデータを出力したフォルダの種類として共通フォルダまたは作業フォルダのどちらかが格納されます。 |
output-folder-name要素 | ファイルデータを出力したフォルダの定義名が格納されます。共通フォルダに出力した場合は共通フォルダ定義名が格納されます。作業フォルダに出力した場合は,常に空(空文字列)になります。 |
file-name要素 | HTTPレスポンスに指定されたContent-Dispositionヘッダのfilename属性の値が格納されます。ただし,HTTPアダプタでデコードなどの処理はしません。filename属性が省略された場合は要素が生成されません。 |
local-file-name要素 | 出力先フォルダに保存した中間ファイルの名称が格納されます。 |
HTTPアダプタを利用したファイル受信の例を次に示します。
図2-118 HTTPアダプタを利用したファイル受信の例(共通フォルダを使用する場合)
次に,共通フォルダのサブフォルダを使用して,HTTPレスポンスでファイルをダウンロードする場合の指定例を示します。
HTTPアダプタ要求電文(ヘッダ)の/http-header-request/output-sub-folder,またはHTTPアダプタ実行環境プロパティファイルのadphttp.request.output-sub-folderに共通フォルダルートからサブフォルダまでの相対パスを指定します。
<http-header-request> : <output-folder-name common="true">com</output-folder-name> <output-sub-folder>/folder1/folder2</output-sub-folder> : </http-header-request> |
adphttp.request.output-folder-name=com adphttp.request.output-sub-folder=/folder1/folder2 |
HTTPアダプタ応答電文(ヘッダ)の/http-headerresponse/http-part/files/file/local-file-nameに共通フォルダルートからファイル名までの相対パスが設定されます。
<http-header-response> : <output-folder-name common="true">com</output-folder-name> : <file-name>file1.doc</file-name> <local-file-name>folder1/folder2/SRV1CLS1----HCSC1---0000000000001000d6j93dx74g0001</local-file-name> : </http-header-response> |
HTTPレスポンスボディのデータをHTTPアダプタの応答電文(ボディ)にそのまま格納する場合,応答電文(ボディ)の電文フォーマットはユーザが任意に作成する必要があります。
必要に応じて,受信したデータをJava呼出アクティビティやコンポーネント共通UOCなどで加工することもできます。
HTTPアダプタでは,HTTPレスポンス時に指定したステータスコードを正常処理またはフォルト処理として扱うように設定することができます。
どのステータスコードを正常処理およびフォルト処理として扱うかはHTTPアダプタ定義ファイルで設定できます。
表2-57 ステータスコードの処理に関する設定
プロパティ名 | 説明 |
---|---|
adphttp.response-code.normal | 正常処理として扱うステータスコードを正規表現で指定します。デフォルトは200です。 |
adphttp.response-code.fault | フォルト処理として扱うステータスコードを正規表現で指定します。デフォルトは空文字列です。 |
なお,ステータスコードが正規表現に完全一致しない場合は,HTTPレスポンスでステータスコードが返らないため,システム例外として処理されます。
ステータスコードの処理フローを次の図に示します。
図2-119 ステータスコードの処理フロー
HTTPアダプタでは,非常に大きなサイズのHTTPレスポンスを受信した場合のメモリ不足およびディスクの圧迫を制御するために,HTTPレスポンスボディのサイズ閾値を設定して,受信サイズを制限することができます。
HTTPレスポンスボディのサイズ閾値はHTTPアダプタ定義ファイルで設定できます。設定するプロパティを次に示します。
表2-58 HTTPレスポンスボディのサイズ閾値の設定
項目 | プロパティ名 |
---|---|
パススルーモードでHTTPレスポンスを応答電文(ボディ)に設定する際に許容するデータの最大サイズ | adphttp.data-size-limit.body-message |
HTTPレスポンスをファイルに書き出す際に許容するデータの最大サイズ | adphttp.data-size-limit.file |
閾値を設定したあとは,HTTPアダプタでは,次の順序でレスポンスサイズの判定をしています。
HTTPアダプタでファイルを受信中に,ネットワーク障害やI/Oエラー,データサイズ制限の超過などが発生した場合,共通フォルダや作業フォルダに不完全な受信ファイルが生成されますが,この不完全な受信ファイルを自動的に削除することができます。
この機能はHTTPアダプタ定義ファイルのadphttp.auto-delete-incomplete-fileプロパティで設定できます。
不完全な受信ファイルの削除に失敗した場合は,メッセージログ(KDEC81403-W)が出力されます。なお,この場合,削除に失敗したファイルは手動で削除する必要があります。削除方法については,マニュアル「サービスプラットフォーム システム構築・運用ガイド」の「5.4.20 作業フォルダを削除する」,および「5.4.22 共通フォルダ内のファイルを削除する」を参照してください。
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.