Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer's Guide

- Previous: Message Queue varhome Directory
- Next: To receive SOAP messages using the JMS API

## To send SOAP messages using the JMS API

1. Import the `MessageTransformer` library.

       import com.sun.messaging.xml.MessageTransformer;

   This is the utility whose methods you use to convert SOAP messages to JMS messages and the reverse. You can then send a JMS message containing a SOAP payload as if it were a normal JMS message.

2. Initialize the `TopicConnectionFactory`, `TopicConnection`, `TopicSession`, and publisher.

       tcf = new TopicConnectionFactory();
       tc = tcf.createTopicConnection();
       session = tc.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
       topic = session.createTopic(topicName);
       publisher = session.createPublisher(topic);

3. Construct a SOAP message using the SOAP with Attachments API for Java (SAAJ).

       *construct a default soap MessageFactory */
       MessageFactory mf = MessageFactory.newInstance();
       * Create a SOAP message object.*/
       SOAPMessage soapMessage = mf.createMessage();
       /** Get SOAP part.*/
       SOAPPart soapPart = soapMessage.getSOAPPart();
       /* Get SOAP envelope. */
       SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
       /* Get SOAP body.*/
       SOAPBody soapBody = soapEnvelope.getBody();
       /* Create a name object. with name space */
       /* http://www.sun.com/imq. */
       Name name = soapEnvelope.createName("HelloWorld", "hw",
        "http://www.sun.com/imq");
       * Add child element with the above name. */
       SOAPElement element = soapBody.addChildElement(name)
       /* Add another child element.*/
       element.addTextNode( "Welcome to Sun Java System Web Services." );
       /* Create an atachment with activation API.*/
       URL url = new URL ("http://java.sun.com/webservices/");
       DataHandler dh = new DataHandler (url);
       AttachmentPart ap = soapMessage.createAttachmentPart(dh);
       /*set content type/ID. */
       ap.setContentType("text/html");
       ap.setContentId("cid-001");
       /**  add the attachment to the SOAP message.*/
       soapMessage.addAttachmentPart(ap);
       soapMessage.saveChanges();

4. Convert the SOAP message to a JMS message by calling the `MessageTransformer.SOAPMessageintoJMSMessage()` method.

       Message m = MessageTransformer.SOAPMessageIntoJMSMessage (soapMessage,
       session );

5. Publish the JMS message.

       publisher.publish(m);

6. Close the JMS connection.

       tc.close();

- Previous: Message Queue varhome Directory
- Next: To receive SOAP messages using the JMS API

- © 2010, Oracle Corporation and/or its affiliates