SOAP over JMS using JBOSS Messaging
mpurdy1973 Apr 9, 2009 2:14 PMi have used SOAP over JMS with TIBCO EMS Server; i would like to do the same with JBOSS Messaging in AS 5.0.1
below is the client code for an example of what i am trying to do
thanx,
matt
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
public class SoapOverJmsClient
{
public static final String SOAP_REQUEST = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns0=\"http://www.pyxisengineering.com/Quote/\"><soapenv:Header/><soapenv:Body><ns0:GetAll><symbol>tibx</symbol></ns0:GetAll></soapenv:Body></soapenv:Envelope>";
public static final String REQUEST_JMS_QUEUE_NAME = "queue.sample";
public static final String REPLY_TO_JMS_QUEUE_NAME = "queue.sample";
public static void main(String[] args)
{
String inputValue = "tibx";
SoapOverJmsClient.sendJMS(inputValue);
}//end SoapOverJmsClient entry point
public static void sendJMS(String inputValue)
{
//receiving reply from the queue.
try
{
//create the queues
QueueConnectionFactory factory = new com.tibco.tibjms.TibjmsQueueConnectionFactory("localhost");
QueueConnection connection = factory.createQueueConnection(null, null);
QueueSession session = connection.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
Queue requestQueue = session.createQueue(SoapOverJmsClient.REQUEST_JMS_QUEUE_NAME);
javax.jms.Queue replyToQueue = session.createQueue(SoapOverJmsClient.REPLY_TO_JMS_QUEUE_NAME);
//build jms message
MessageProducer sender = session.createSender(requestQueue);
TextMessage txtMsg = session.createTextMessage();
txtMsg.setStringProperty("SoapAction", "\"GetAll\"");
txtMsg.setStringProperty("Mime_Version", "1.0");
txtMsg.setStringProperty("Content_Type", "application/xml; charset=\"utf-8\"");
txtMsg.setText(SoapOverJmsClient.SOAP_REQUEST);
//set the reply queue
txtMsg.setJMSReplyTo(replyToQueue);
//send message
sender.send(txtMsg);
//use createQueue() to enable receiving from dynamic queues.
QueueReceiver receiver = session.createReceiver(replyToQueue);
//start the connection to receive from queue
connection.start();
//read queue messages
javax.jms.Message message = receiver.receive(10000);
if(message != null)
System.out.println("Received message: " + message);
else
System.out.println("Error while retriving message");
connection.close();
}
catch(JMSException jmse)
{
jmse.printStackTrace();
System.exit(0);
}//end catch jmse
}//end static sendJMS
}//end class SoapOverJmsClient