Interstage Application Server SOAPサービス ユーザーズガイド |
目次 索引 |
第4章 Messaging方式のアプリケーションの実装 | > 4.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(); } } } |
送信するSOAPメッセージを表すSOAPMessageオブジェクトを取得します。
SOAPMessageオブジェクトは、MessageFactoryから取得します。
送達保証機能を使用する場合は、ProviderConnectionFactoryを使用して取得します。詳細は“送達保証機能の実装”を参照してください。
SAAJ-APIを使用して、送信するSOAPメッセージを表すSOAPMessageオブジェクトを作成します。
この例では、直接SOAPEnvelopeの内容をプログラムする方法を使用しています。ほかに、既存のXMLデータを使用する方法もあります。詳細は“XMLデータを取り込んで使用する送信アプリケーション”を参照してください。
送信するSOAPメッセージを表すSOAPMessageオブジェクトへ添付ファイルを設定するにはSAAJ-APIを使用します。1つのSOAPメッセージには任意の数の添付ファイルを設定できます。それぞれの添付ファイルはjavax.xml.soap.AttachmentPartオブジェクトとして表され、SOAPMessage.createAttachmentPartメソッドで生成できます。サンプルではjavax.activation.DataHandlerオブジェクトを使用して添付ファイルを生成しています。−(1)(2)(3)
また生成されたAttachmentPartオブジェクトはSOAPMessage.addAttachmentPartメソッドによりSOAPMessageオブジェクトに設定されます。
目次 索引 |