Hitachi

Cosminexus V11 アプリケーションサーバ SOAPアプリケーション開発の手引


3.5.3 添付ファイルのJavaインスタンス生成とデータ取得

添付ファイルのJava型であるjavax.activation.DataHandlerは,JavaBeans Activation Framework(JAF)の型です。そのため,JAFの仕様に従って添付ファイルを利用できます。

添付ファイルのインスタンス生成方法とデータ取得方法について説明します。

〈この項の構成〉

(1) インスタンスの生成方法

添付ファイルのオブジェクトであるjavax.activation.DataHandlerオブジェクトの生成方法を説明します。

まず,javax.activation.DataHandlerクラスのコンストラクタを次の表に示します。

表3‒16 javax.activation.DataHandlerクラスのコンストラクタ

項番

利用ケース

コンストラクタ

引数の説明

1

ファイルを添付する

DataHandler(javax.activation.DataSource ds)

第1引数

javax.activation.DataSourceオブジェクトです。javax.activation.FileDataSourceクラスのオブジェクトを指定できます。

2

メモリ上のオブジェクトを添付する

DataHandler(java.lang.Object obj, java.lang.String mimeType)

第1引数

Javaオブジェクトです。ただし,指定できる型は,JAFの仕様でサポートしている範囲の型となります。

第2引数

オブジェクトのMIMEタイプです。JAFの仕様に従って,第1引数で指定したオブジェクトに合わせて指定してください。

添付ファイルとして送信するオブジェクトによって,javax.activation.DataHandlerオブジェクトの生成方法が異なります。生成方法の例を次に示します。

(a) ファイルを添付ファイルとして送信する場合

ファイルを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。なお,ファイルは存在するファイルを指定してください。

  1. 添付ファイルのファイルパスを引数に指定し,javax.activation.FileDataSourceオブジェクトを生成します。

    javax.activation.FileDataSource fdSource = new javax.activation.FileDataSource("C:\\sample.jpg");
  2. javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.DataHandler dhandler = new javax.activation.DataHandler(fdSource);

(b) java.lang.Stringオブジェクトを添付ファイルとして送信する場合

java.lang.Stringオブジェクトを添付ファイルとして送信する場合の,javax.activation.DataHandlerオブジェクトの生成方法を次に示します。

  1. 添付ファイルとして送信する文字列のjava.lang.Stringオブジェクトを生成します。

    java.lang.String attachments = new java.lang.String("あいうえお");
  2. java.lang.Stringオブジェクト,およびMIMEタイプを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    java.lang.Stringオブジェクトは,charsetパラメタに指定された文字コードでエンコードされます。

    javax.activation.DataHandler dhandler = new javax.activation.DataHandler(attachments, "text/plain; charset=UTF-8");
注意事項

javax.activation.DataHandler(Object, String)コンストラクタの第1引数に,日本語を含むjava.lang.Stringオブジェクトを指定する場合は,第2引数にそのMIMEタイプおよびcharsetパラメタで適切な文字コードを指定する必要があります。javax.activation.DataHandler(Object, String)コンストラクタの第2引数の記述形式を次に示します。

MIMEタイプ + ";" + "charset" + "=" + 文字コード

なお,charsetパラメタを指定する場合は,次の点に注意してください。

  • charsetパラメタを指定しないと,添付ファイルの文字列がデフォルトの文字コード(US-ASCII)でエンコードされます。そのため,添付ファイルの文字列がUS-ASCII以外の文字を含んでいる場合,不正な添付ファイルが送信されてしまいます。添付ファイルの文字列がUS-ASCII以外の文字を含んでいる場合は,必ずcharsetパラメタを指定してください。

  • charsetパラメタは,添付ファイルとしてStringオブジェクトを送信する場合だけ指定できます。JPEGなどのバイナリデータを送信する場合は指定できません。

charsetパラメタの指定値(文字コード)については,次の点に注意してください。

  • 大文字/小文字は区別されません。

  • JDKがサポートしていない文字コードおよび空文字は指定できません。

(2) 添付ファイルのデータ取得方法

添付ファイルのデータ取得方法を次に示します。なお,次の指定例に示す「dhandler」は,受信したjavax.activation.DataHandlerオブジェクトです。

(a) 添付ファイルを受信してjava.io.InputStreamオブジェクトとして取得する場合

  1. 添付ファイルのデータをjava.io.InputStreamとして取得します。

    受信したjavax.activation.DataHandlerオブジェクトから,getInputStream()メソッドでjava.io.InputStreamオブジェクトを取得します。

    java.io.InputStream stream = dhandler.getInputStream();

(b) 添付ファイルを受信してjavax.activation.DataSourceオブジェクトとして取得する場合

  1. javax.activation.DataSourceオブジェクトを取得します。

    受信したjavax.activation.DataHandlerオブジェクトから,getDataSource()メソッドで関連づけられたjavax.activation.DataSourceオブジェクトを取得します。

    javax.activation.DataSource datasource =dhandler.getDataSource();

(c) 添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合

添付ファイルを受信してjava.lang.Stringオブジェクトとして取得する場合の方法を次に示します。

  1. 添付ファイルのデータをオブジェクトとして取得します。

    受信したjavax.activation.DataHandlerオブジェクトから,getContent()メソッドでオブジェクトを取得します。

    java.lang.Object content = dhandler.getContent();
  2. 添付ファイルのMIMEタイプを取得します。

    受信したjavax.activation.DataHandlerオブジェクトに対し,getContentType()メソッドを実行して,添付ファイルのMIMEタイプおよび文字コードを取得します。

    ava.lang.String mimetype = dhandler.getContentType();

    ここでは,mimetypeの内容として「text/plain; charset=UTF-8」が取得されます。

  3. オブジェクトを適切な型にキャストします。

    添付ファイルのMIMEタイプに応じて,オブジェクトを適切な型にキャストします。

    java.lang.String attachment = (java.lang.String) content;