Hitachi

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


30.7.1 送信するデータごとのJavaオブジェクトの生成方法

MTOM/XOP形式の添付ファイルとして送信するデータに応じたJavaオブジェクトの生成方法を説明します。

〈この項の構成〉

(1) 存在するテキストファイルを送信する場合

すでに存在しているテキストファイルを送信する場合,byte[]を使用する方法とjavax.activation.DataHandlerを使用する方法があります。それぞれの手順を説明します。

(a) byte[]を使用する方法

byte[]を使用して,すでに存在するテキストファイルを送信する場合の手順を次に示します。

  1. java.io.FileInputStreamオブジェクトを生成します。

    送信する添付ファイルデータのファイルパスを引数に指定して,java.io.FileInputStreamオブジェクトを生成します。

    java.io.FileInputStream fileInputStream =
        new java.io.FileInputStream("sample.txt");
  2. byte[]を生成します。

    java.io.ByteArrayOutputStreamオブジェクトにjava.io.FileInputStreamオブジェクトから読み込んだバイトデータを書き込みます。

    その後,java.io.ByteArrayOutputStreamクラスのtoByteArray()メソッドを使用して,byte[]を生成します。

    java.io.ByteArrayOutputStream byteArrayOutputStream =
        new java.io.ByteArrayOutputStream();
     
    int i = 0;
    while ((i = fileInputStream.read()) != -1) {
        byteArrayOutputStream.write(i);
    }
     
    byte[] bytes = byteArrayOutputStream.toByteArray();

(b) javax.activation.DataHandlerを使用する方法

javax.activation.DataHandlerを使用して,すでに存在するファイルを添付して送信する場合の手順を次に示します。

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

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

    javax.activation.FileDataSource fileDataSource =
        new javax.activation.FileDataSource("sample.txt");
  2. javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.DataHandler dataHandler =
        new javax.activation.DataHandler(fileDataSource);

(2) 存在するイメージファイルを送信する場合

すでに存在しているイメージファイルを送信する場合,byte[]を使用する方法,javax.activation.DataHandlerを使用する方法,およびjava.awt.Imageを使用する方法があります。それぞれの手順を説明します。

(a) byte[]を使用する方法

byte[]を使用して,すでに存在するイメージファイルを送信する場合の手順を示します。

  1. java.io.FileInputStreamオブジェクトを生成します。

    送信する添付ファイルデータのファイルパスを引数に指定し,java.io.FileInputStreamオブジェクトを生成します。

    java.io.FileInputStream fileInputStream =
        new java.io.FileInputStream("sample.png");
  2. byte[]を生成します。

    java.io.ByteArrayOutputStreamオブジェクトにjava.io.FileInputStreamオブジェクトから読み込んだバイトデータを書き込みます。

    その後,java.io.ByteArrayOutputStreamクラスのtoByteArray()メソッドを使用して,byte[]を生成します。

    java.io.ByteArrayOutputStream byteArrayOutputStream =
        new java.io.ByteArrayOutputStream();
     
    int i = 0;
    while ((i = fileInputStream.read()) != -1) {
        byteArrayOutputStream.write(i);
    }
     
    byte[] bytes = byteArrayOutputStream.toByteArray();

(b) javax.activation.DataHandlerを使用する方法

javax.activation.DataHandlerを使用して,すでに存在するイメージファイルを送信する場合の手順を示します。

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

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

    javax.activation.FileDataSource fileDataSource =
        new javax.activation.FileDataSource("sample.png");
  2. javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.DataHandler dataHandler =
        new javax.activation.DataHandler(fileDataSource);

(c) java.awt.Imageを使用する方法

java.awt.Imageをすでに存在するイメージファイルを送信する場合の手順を示します。

  1. java.awt.Imageオブジェクトを生成します。

    java.awt.ToolkitクラスにあるcreateImage(String)メソッドの引数に送信する添付ファイルデータのファイルパスを指定し,java.awt.Imageオブジェクトを生成します。

    java.awt.Image image =
        Toolkit.getDefaultToolkit().createImage("sample.png");

(3) 存在するXMLファイルを送信する場合

すでに存在しているXMLファイルを送信する場合,byte[]を使用する方法,javax.activation.DataHandlerを使用する方法,およびjavax.xml.transform.Sourceを使用する方法があります。それぞれの手順を説明します。

(a) byte[]を使用する方法

byte[]を使用して,すでに存在するXMLファイルを送信する場合の手順を示します。

  1. java.io.FileInputStreamオブジェクトを生成します。

    送信する添付ファイルデータのファイルパスを引数に指定し,java.io.FileInputStreamオブジェクトを生成する。

    java.io.FileInputStream fileInputStream =
        new java.io.FileInputStream("sample.xml");
  2. byte[]を生成します。

    java.io.ByteArrayOutputStreamオブジェクトにjava.io.FileInputStreamオブジェクトから読み込んだバイトデータを書き込みます。

    その後,java.io.ByteArrayOutputStreamクラスのtoByteArray()メソッドを使用して,byte[]を生成します。

    java.io.ByteArrayOutputStream byteArrayOutputStream = 
        new java.io.ByteArrayOutputStream();
     
    int i = 0;
    while ((i = fileInputStream.read()) != -1) {
        byteArrayOutputStream.write(i);
    }
     
    byte[] bytes = byteArrayOutputStream.toByteArray();

(b) javax.activation.DataHandlerを使用する方法

javax.activation.DataHandlerを使用して,すでに存在するXMLファイルを送信する場合の手順を示します。

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

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

    javax.activation.FileDataSource fileDataSource =
        new javax.activation.FileDataSource("sample.xml");
  2. javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.FileDataSourceオブジェクトを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.DataHandler dataHandler =
        new javax.activation.DataHandler(fileDataSource);

(c) javax.xml.transform.Sourceを使用する方法

javax.xml.transform.Sourceを使用して,すでに存在するXMLファイルを送信する場合の手順を示します。

  1. javax.xml.transform.Sourceオブジェクトを生成します。

    送信する添付ファイルデータのファイルパスを引数に指定し,javax.xml.transform.stream.StreamSourceオブジェクトを生成します。

    javax.xml.transform.stream.StreamSource streamSource =
        new javax.xml.transform.stream.StreamSource("sample.xml");

(4) java.lang.Stringオブジェクトを送信する場合

java.lang.Stringオブジェクトを送信する場合byte[]を使用する方法,およびjavax.activation.DataHandlerを使用する方法があります。それぞれの手順を説明します。

(a) byte[]を使用する方法

byte[]を使用して,java.lang.Stringオブジェクトを送信する場合の手順を示します。

  1. java.lang.Stringオブジェクトを生成します。

    java.lang.String str =
        new java.lang.String("あいうえお");
  2. byte[]を生成します。

    java.lang.StringクラスのgetBytes()メソッドを使用して,byte[]を生成します。

    byte[] bytes =
        str.getBytes();

(b) javax.activation.DataHandlerを使用する方法

javax.activation.DataHandlerを使用して,java.lang.Stringオブジェクトを送信する場合の手順を示します。

  1. java.lang.Stringオブジェクトを生成します。

    java.lang.String str =
        new java.lang.String("あいうえお");
  2. javax.activation.DataHandlerオブジェクトを生成します。

    java.lang.StringオブジェクトとMIMEタイプを引数に指定し,javax.activation.DataHandlerオブジェクトを生成します。

    javax.activation.DataHandler dataHandler =
        new javax.activation.DataHandler(str, "text/plain; charset=UTF-8");

(5) javax.activation.DataHandlerオブジェクト生成時の注意事項

MTOM/XOP仕様形式の添付ファイルで,テキストファイル,XMLファイル,またはjava.lang.Stringオブジェクト(文字列)をjavax.activation.DataHandlerオブジェクトとして送信する場合,wsi:swaRef形式の添付ファイルと同様にjavax.activation.DataHandlerクラスのDataHandler(Object, String)コンストラクタを使用することで,オブジェクトに含まれる文字の文字コードを指定できます。

DataHandler(Object, String)コンストラクタを使用した文字コードの指定方法などの詳細は,「28.5.1(4) javax.activation.DataHandlerオブジェクト生成時の注意事項」を参照してください。