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

第4章 Messaging方式のアプリケーションの実装> 4.3 送信アプリケーションの作成

4.3.2 添付ファイルを使用する場合

 添付ファイルは、SOAPメッセージに“添付できる”データです。

 以下、サンプルプログラムSampleMsgCL2useAttachment.javaの例を用いて処理を説明します。

 import javax.xml.soap.*;
 import java.net.URL;
 import java.io.*;
 import javax.activation.DataHandler;

 public class SampleMsgCL2useAttachment
 {
  public static void main( String[] args )
  {
   try{
    String endPoint = new String("http://localhost/issoapx/services/Sample1");

    SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
    SOAPConnection conn = scf.createConnection();
    MessageFactory mf = MessageFactory.newInstance();

    SOAPMessage msg = mf.createMessage();
    SOAPPart part = msg.getSOAPPart();
    SOAPEnvelope env = part.getEnvelope();
    env.getHeader().detachNode();

    SOAPBody body = env.getBody();
    SOAPBodyElement elm = body.addBodyElement(
        env.createName( "RequestBody", "m", "urn:SampleMsg" ));
    elm.addChildElement( env.createName("Request")).
        addTextNode("request string...");
    elm.addNamespaceDeclaration( "m", "urn:SampleMsg" );

    //**(1)**
    java.net.URL url1 = new java.net.URL(
        "http://www.apache.org/LICENSE.txt");
    AttachmentPart ap1 = msg.createAttachmentPart( new DataHandler(url1));
    ap1.setContentType("text/plain");
    msg.addAttachmentPart(ap1);

    //**(2)**
    java.net.URL url2 = new java.net.URL("file:///C:/TEMP/sample.xml");
    AttachmentPart ap2 = msg.createAttachmentPart( new DataHandler(url2));
    ap2.setContentType("text/xml");
    msg.addAttachmentPart(ap2);

    //**(3)**
    java.net.URL url3 = new java.net.URL("file:///C:/TEMP/sample.jpg");
    AttachmentPart ap3 = msg.createAttachmentPart( new DataHandler(url3));
    ap3.setContentType("image/jpeg");
    msg.addAttachmentPart(ap3);

    msg.saveChanges();
    conn.call( msg, endPoint );
    conn.close();

   } catch( SOAPException e ) {
    System.out.println("SOAPException raised.");
    System.out.println(" Message:"+e.getMessage());
    System.out.println(" Cause :"+e.getCause());
    e.printStackTrace();
   } catch( Throwable t ) {
    t.printStackTrace();
   }
  }
 }

■送信するSOAPMessageオブジェクトの取得

 送信するSOAPメッセージを表すSOAPMessageオブジェクトを取得します。
 SOAPMessageオブジェクトは、MessageFactoryから取得します。

 送達保証機能を使用する場合は、ProviderConnectionFactoryを使用して取得します。詳細は“送達保証機能の実装”を参照してください。

■送信するSOAPメッセージの内容設定

 SAAJ-APIを使用して、送信するSOAPメッセージを表すSOAPMessageオブジェクトを作成します。

 この例では、直接SOAPEnvelopeの内容をプログラムする方法を使用しています。ほかに、既存のXMLデータを使用する方法もあります。詳細は“XMLデータを取り込んで使用する送信アプリケーション”を参照してください。

■送信するSOAPメッセージへの添付ファイルの設定

 送信するSOAPメッセージを表すSOAPMessageオブジェクトへ添付ファイルを設定するにはSAAJ-APIを使用します。1つのSOAPメッセージには任意の数の添付ファイルを設定することができます。それぞれの添付ファイルはjavax.xml.soap.AttachmentPartオブジェクトとして表され、SOAPMessage.createAttachmentPartメソッドで生成することができます。サンプルではjavax.activation.DataHandlerオブジェクトを使用して添付ファイルを生成しています。−(1)(2)(3)

 また生成されたAttachmentPartオブジェクトはSOAPMessage.addAttachmentPartメソッドによりSOAPMessageオブジェクトに設定されます。


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

Copyright 2003 FUJITSU LIMITED