Mega Code Archive

 
Categories / Java / J2EE
 

A JMS message listener can use the MessageTransformer utility to convert JMS messages back to SOAP messages

/*  * @(#)ReceiveSOAPMessageWithJMS.java  1.4 02/05/02  *  * Copyright (c) 2002 Sun Microsystems, Inc. All Rights Reserved.  *  * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,  * modify and redistribute this software in source and binary code form,  * provided that i) this copyright notice and license appear on all copies of  * the software; and ii) Licensee does not utilize the software in a manner  * which is disparaging to Sun.  *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY  * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR  * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE  * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING  * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS  * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,  * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF  * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE  * POSSIBILITY OF SUCH DAMAGES.  *  * This software is not designed or intended for use in on-line control of  * aircraft, air traffic, aircraft navigation or aircraft communications; or in  * the design, construction, operation or maintenance of any nuclear  * facility. Licensee represents and warrants that it will not use or  * redistribute the Software for such purposes.  */ import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPMessage; import javax.xml.soap.AttachmentPart; import com.sun.messaging.xml.MessageTransformer; import com.sun.messaging.ConnectionFactory; import javax.jms.MessageListener; import javax.jms.Connection; import javax.jms.Session; import javax.jms.Message; import javax.jms.Session; import javax.jms.Topic; import javax.jms.JMSException; import javax.jms.MessageConsumer; import java.util.Iterator; /**  * This example shows a JMS message listener can use the MessageTransformer  * utility to convert JMS messages back to SOAP messages.  */ public class ReceiveSOAPMessageWithJMS implements MessageListener {     ConnectionFactory        connectionFactory = null;     Connection               connection = null;     Session                  session = null;     Topic                    topic = null;     MessageConsumer          msgConsumer = null;     MessageFactory           messageFactory = null;     /**      * Default constructor.      */     public ReceiveSOAPMessageWithJMS(String topicName) {         init(topicName);     }     /**      * JMS Connection/Session/Destination/MessageListener set ups.      */     public void init(String topicName) {         try {             /**              * construct a default SOAP message factory.              */             messageFactory = MessageFactory.newInstance();             /**              * JMS set up.              */             connectionFactory = new com.sun.messaging.ConnectionFactory();             connection = connectionFactory.createConnection();             session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);             topic = session.createTopic(topicName);             msgConsumer = session.createConsumer(topic);             msgConsumer.setMessageListener( this );             connection.start();             System.out.println ("ready to receive SOAP messages ...");         } catch (Exception jmse) {             jmse.printStackTrace();         }     }     /**      * JMS Messages are delivered to this method. The body of the message      * contains SOAP streams.      *      * 1.  The message conversion utility converts JMS message to SOAP      * message type.      * 2.  Get the attachment parts and print content information to the      * standard output stream.      */     public void onMessage (Message message) {         try {             /**              * convert JMS to SOAP message.              */             SOAPMessage soapMessage =             MessageTransformer.SOAPMessageFromJMSMessage( message, messageFactory );             /**              * Print attachment counts.              */             System.out.println("message received!  Attachment counts: " + soapMessage.countAttachments());             /**              * Get attachment parts of the SOAP message.              */             Iterator iterator = soapMessage.getAttachments();             while ( iterator.hasNext() ) {                 /**                  * Get next attachment.                  */                 AttachmentPart ap = (AttachmentPart) iterator.next();                 /**                  * Get content type.                  */                 String contentType = ap.getContentType();                 System.out.println("content type: " + contentType);                 /**                  * Get content Id.                  */                 String contentId = ap.getContentId();                 System.out.println("content Id: " + contentId);                 /**                  * Check if this is a Text attachment.                  */                 if ( contentType.indexOf("text") >=0 ) {                     /**                      * Get and print the string content if it is a text                      * attachment.                      */                     String content = (String) ap.getContent();                     System.out.println("*** attachment content: " + content);                 }             }         } catch (Exception e) {             e.printStackTrace();         }     }     /**      * The main method to start the example receiver.      */     public static void main (String[] args) {         String topicName = "TestTopic";         if (args.length > 0) {             topicName = args[0];         }         try {             ReceiveSOAPMessageWithJMS rsm = new ReceiveSOAPMessageWithJMS(topicName);         } catch (Exception e) {             e.printStackTrace();         }     } }          jaxm.zip( 13 k)