Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


10.24.1 一時ファイル

〈この項の構成〉

(1) 命名規則

JAX-WSエンジンが出力する一時ファイルのファイル名は,接頭辞に"MIME",接尾辞に".tmp"が付いた名前となります。この名前はJAX-WSエンジンが自動で付与するため,任意のファイル名には変更できません。

JAX-WSエンジンが出力する一時ファイルのファイル名の例を次に示します。

MIME6838906861691549713.tmp

異なるプロセスのcjclstartapコマンドでWebサービスクライアントを実行する場合,一時ファイルのファイル名が重複することがあります。そのため,1048576バイト以上のサイズのMIMEボディを含むMIME Multipart/Related構造のSOAPメッセージを受信する場合は,cjclstartapコマンドのプロセスごとに一時ファイルの出力先を変える必要があります。システムプロパティの"java.io.tmpdir"キーで一時ファイルの出力先を指定してください。

(2) 出力と削除

一時ファイルは,1048576バイト以上のサイズのMIMEボディであるルートパートを受信したとき,および1048576バイト以上のサイズのMIMEボディである添付ファイルパートを受信し操作したときに,Javaのデフォルト一時ファイルディレクトリ(システムプロパティにある"java.io.tmpdir"キーに対応する値)へ出力されます。

ルートパートのMIMEボディに対応する一時ファイルは,SOAPメッセージをアンマーシャルしたあとJAX-WSエンジンによって削除されます。また,添付ファイルパートのMIMEボディに対応する一時ファイルは,添付ファイルをクローズするときに削除されます。javax.activation.DataHandler型にマッピングされる添付ファイルを使用する場合は,javax.activation.DataHandlerオブジェクトに対してinstanceof演算子を用いてcom.sun.xml.ws.developer.StreamingDataHandlerクラスであるか判別したあと,com.sun.xml.ws.developer.StreamingDataHandlerクラスにキャストしてからcom.sun.xml.ws.developer.StreamingDataHandler#close()メソッドでクローズする必要があります。

MIME Multipart/Related構造のSOAPメッセージを受信している場合,コネクションの切断やJVMがダウンしたとき,一時ファイルが残ることがあります。一時ファイルが残った場合,一時ファイルを削除してください。

(3) 見積もり方法

JAX-WSエンジンが出力する一時ファイルは,受信するMIME Multipart/Related構造のSOAPメッセージに含まれるMIMEボディと同じサイズです。一時ファイルの最大ディスク使用量は次に示す算出式で求めることができます。