2.15.6 HTTP受付のファイル管理
ここでは,HTTP受付でファイルのデータを送受信するときのファイル管理について説明します。
HTTP受付はファイルのデータを受信すると,受信したデータを作業フォルダ内に中間ファイルとして出力します。レスポンス時にファイルをダウンロードする場合は,ユーザが応答電文(ヘッダ)で指定した作業フォルダの中間ファイルを各クライアントに送信します。
(1) 作業フォルダの作成と削除
作業フォルダは,HTTP受付が送受信するデータを一時的に格納するためのフォルダです。
(a) 作業フォルダの作成
HTTP受付は,HTTPクライアントからHTTPリクエストを受け付けると,リクエストごとに作業フォルダを作成します。
作業フォルダを作成するディレクトリ(作業フォルダルート)はHCSCサーバランタイム定義ファイルのwork-folderプロパティで設定できます。詳細は,マニュアル「サービスプラットフォーム リファレンス」の「6.5.6 HCSCサーバランタイム定義ファイル」を参照してください。
また,HTTP受付は,HTTPクライアントからのリクエストを受け付けると,リクエストごとにリクエストIDを生成します。ビジネスプロセスの処理は,生成したリクエストIDを指定して実行されます。
リクエストIDは次の形式で生成されます。
<受付ID><HTTPクライアントのIPアドレス><日付><時刻><追番><分割キー><HCSCサーバ名>
リクエストIDのそれぞれの項目について次の表に示します。
項目 |
桁数 |
内容 |
---|---|---|
<受付ID> |
8桁 |
HTTP受付の受付IDです。受付IDが8桁に満たない場合は,受付IDの右側に足りない分の「-」が設定されます。 |
<HTTPクライアントのIPアドレス> |
IPv4の場合:12桁 IPv6の場合:32桁 |
要求元のHTTPクライアントのIPアドレス(IPv4の場合は10進数表記形式,IPv6の場合は16進数表記形式)です。IPv4アドレスのそれぞれのバイトが3桁に満たない場合は,それぞれのバイトの左側に足りない分の「0」が設定されます。IPv6アドレスはそれぞれのバイトが4桁に満たない場合は,それぞれのバイトの左側に足りない分の「0」が設定されます。英字は小文字で表記されます。 |
<日付> |
8桁 |
HTTP受付がリクエストを受け付けた日付がyyyymmddの形式で設定されます。 |
<時刻> |
9桁 |
HTTP受付がリクエストを受け付けた時刻がhhmmssSSSの形式で設定されます。 |
<追番> |
3桁 |
フォルダ名を一意にするための整数値が「000」からの連番で設定されます。<日付><時刻><追番>がすでにあるリクエストIDと重複する場合は追番を1つ繰り上げます。 「001」から「999」までのどの整数値を設定しても重複する場合,<日付>および<時刻>を変更して追番には「000」を設定します。 |
<分割キー> |
1桁 |
HCSCサーバ名が付加されていることを示す分割キーです。半角スラッシュ(/),半角アットマーク(@)または半角ピリオドが使用されます。 HCSCサーバランタイム定義ファイルで変更可能です。 詳細は,マニュアル「サービスプラットフォーム リファレンス」の「6.5.6 HCSCサーバランタイム定義ファイル」を参照してください。 |
<HCSCサーバ名> |
最大8桁 |
HTTP受付が配備されているHCSCサーバの名称です。HCSCサーバ名が8桁に満たない場合,不足分は補われません。 |
なお,リクエストIDから<受付ID>,<分割キー>,<HCSCサーバ名>を除いた文字列が作業フォルダ名となります。
- 参考
-
デフォルトの状態では,マルチパート型以外のHTTPリクエストの場合は,作業フォルダが作成されません。ただし,マルチパート型以外のHTTPリクエストの場合でも,HTTPレスポンス時にファイルをダウンロードするときのために,HTTPリクエスト時にマルチパート型かどうかに関係なく作業フォルダを必ず作成するように設定できます。この設定は,HTTP受付定義ファイルのhttprecp.switchover.file-transfer.modeプロパティで有効にできます。
(b) 作業フォルダの削除
作業フォルダおよび作業フォルダ内の中間ファイルは,次の条件をすべて満たす場合に自動で削除されます。
-
HTTP受付定義ファイルのhttprecp.work-dir.auto-deleteプロパティの値がtrueである
-
HTTP受付が呼び出したビジネスプロセスから受け取った応答電文のstatus-code要素の値が200,またはstatus-code要素の指定を省略している
プロセスが異常終了した場合,およびcscpireexecコマンド(プロセスインスタンスの再実行)などでビジネスプロセスを再実行した場合は,作業フォルダおよび作業フォルダ内の中間ファイルは自動で削除されません。なお,作業フォルダが自動で削除されない場合,次の方法で作業フォルダを削除する必要があります。
-
HTTP受付定義ファイルのhttprecp.work-dir.auto-deleteプロパティの値がfalse,かつビジネスプロセスが非同期型のとき
ビジネスプロセスからファイル操作アダプタを呼び出して,作業フォルダおよび中間ファイルを削除してください。または,cscfswlsコマンドで作業フォルダを参照し,削除対象かどうか確認したあと,cscfswrmコマンドで作業フォルダを削除してください。
-
上記以外のとき
cscfswlsコマンドで作業フォルダを参照し,削除対象かどうか確認したあと,cscfswrmコマンドで作業フォルダを削除してください。
(2) 一時ファイルの作成と削除
HTTPリクエスト時にファイルのデータを送信する場合,メモリの圧迫を回避するため,処理用に一時ファイルが作成されます。また,一時ファイルを保存するフォルダとして,HTTP受付の起動時に,次の場所に一時ファイル保存フォルダが必ず作成されます。
<作業フォルダルート>\<HCSCサーバ名>\<受付ID>\<00000000000000000000000000000000>
- 注意事項
-
一時ファイルはリクエスト処理の最後に自動で削除されます。ただし,次の場合,一時ファイルは削除されません。
-
一時ファイルが開かれたままの場合
-
J2EEサーバが正常に停止されなかった場合
-
システムがダウンした場合
一時ファイルが削除されない場合,cscfswrmコマンドで一時ファイル保存フォルダを削除してください。なお,一時ファイル保存フォルダは,HTTP受付を停止してから削除してください。HTTP受付が起動しているときに削除すると,ファイルのデータを送信するHTTPリクエストはすべてエラーとなります。
-
なお,小さいサイズのデータを送信するなど,一時ファイルへの出力が不要な場合,マルチパート型の各パートに対して一時ファイルに出力するかどうかのサイズの閾値を設定できます。この閾値はHTTP受付定義ファイルのhttprecp.file-trans.temp-file.partsize-thresholdプロパティで設定できます。
(3) HTTPリクエストのサイズ上限の設定
サイズが大きい不正なデータが送信されることを防ぐために,マルチパート型のHTTPリクエストのサイズに上限を設定できます。HTTPリクエストのサイズが上限を超えた場合は,リクエスト処理が中止しHTTPクライアントにエラーを返します。
サイズ上限は次の項目についてそれぞれ設定できます。
-
リクエスト全体
HTTPヘッダ,HTTPボディ(全パートのヘッダおよびボディ分)を含むHTTPリクエスト全体のサイズ上限を設定できます。リクエスト全体のサイズ上限は,HTTP受付定義ファイルのhttprecp.file-trans.maxsize.requestプロパティで設定できます。
-
パート単位
各パート単位に指定されたボディ部分のサイズ上限を設定できます。テキストデータの場合でも同様の上限です。パート単位のサイズ上限は,HTTP受付定義ファイルのhttprecp.file-trans.maxsize.partプロパティで設定できます。
(4) パス長に関する注意事項
OSによってパス長に制限がある場合,作業フォルダルートのパス長は適切な長さに設定してください。それぞれのパス長は次のとおりです。
項目 |
パス長 |
---|---|
作業フォルダルート |
HCSCサーバランタイム定義ファイルのwork-folderプロパティで設定します。 |
HCSCサーバ名 |
最大8桁です。 |
受付ID |
最大8桁です。 |
作業フォルダ名 |
IPv4の場合:32桁で固定です。 IPv6の場合:52桁で固定です。 |
中間ファイル |
最大23桁です。 |
一時ファイル保存フォルダ名 |
32桁で固定です。 |
一時ファイル |
最大53桁です。 |