Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第4章 Messaging方式のアプリケーションの実装> 4.4 SAAJ-APIによるSOAPメッセージの処理

4.4.4 添付ファイルの処理

 SOAPMessageオブジェクトには1つのSOAPPartオブジェクトと、0個以上のAttachmentPartオブジェクトを含むことができます。javax.xml.soap.AttachmentPartはそれぞれの添付ファイルを表すオブジェクトです。AttachmentPartオブジェクトを生成するにはSOAPMessage.createAttachmentPartメソッドを使用し、SOAPMessageオブジェクトにAttachmentPartを設定するにはSOAPMessage.addAttachmentPartメソッドを使用します。

 SOAPMessageオブジェクトから添付ファイルを取り出すにはSOAPMessage.getAttachmentsメソッドを使用します。またSOAPMessage.countAttachmentsメソッドで添付ファイルの個数を取得することができます。

 import javax.xml.soap.*;
 import java.net.URL;
 import java.io.FileInputStream;
 import java.util.Iterator;
 import javax.activation.DataHandler;
    .....
  MessageFactory mf = MessageFactory.newInstance();
  SOAPMessage msg = mf.createMessage();
  SOAPPart part = msg.getSOAPPart();
    .....
 // AttachmentPartの設定1
  URL url = new URL("file:///C:/temp/sample.txt");
  URL url = new URL("file:///temp/sample.txt");
  AttachmentPart ap1 = msg.createAttachmentPart( new DataHandler(url));
  ap1.setContentType("text/plain");
  msg.addAttachmentPart(ap1);

 // AttachmentPartの設定2
  AttachmentPart ap2 = msg.createAttachmentPart();
  FileInputStream fis = new FileInputStream("C:\\temp\\sample.xml");
  FileInputStream fis = new FileInputStream("/tmp/sample.xml");
  ap2.setContent( fis, "text/xml");
  msg.addAttachmentPart(ap2);
    .....
 // 添付ファイルの個数を取得
 int count = msg.countAttachments();

 // AttachmentPartの取得
  Iterator it = msg.getAttachments();
  while(it.hasNext()){
   AttachmentPart ap = (AttachmentPart)it.next();
   String contentType = ap.getContentType();
   String contentId = ap.getContentId();
   Object content = ap.getContent();
    .....
  }
    .....

 AttachmentPartオブジェクトは1つのSOAPMessageオブジェクトに対して複数設定することができます。上記の例では、2つのAttachmentPartオブジェクトを設定しています。

■添付ファイルのデータと情報

 AttachmentPartオブジェクトのgetContent / setContentメソッドを使用した場合、使用したクラスに応じてデータ変換が行われるため、受信した添付ファイルのデータが送信元の添付ファイルのデータと異なる場合があります。
 送信元と同じデータを受信する必要がある(データ変換を回避したい)場合は、getDataHandler / setDataHandler メソッドを使用してください。


目次 索引 前ページ次ページ

Copyright 2003 FUJITSU LIMITED