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

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

4.2.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/soap/services/Sample1");
//** SSLの場合 **
//**    String endPoint = new String("https://localhost/soap/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オブジェクトに設定されます。


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

All Rights Reserved, Copyright(C) 富士通株式会社 2005