JMS Topic and RouteBack
vegee May 5, 2008 9:11 AMHello,
I have a problem with JMS Topic and getting back the response. My config files:
jboss-esb.xml
<?xml version = "1.0" encoding = "UTF-8"?> <jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" parameterReloadSecs="5"> <!-- - -> MyService1 -> - |- - - MyService4 | | | | | | -> - "quickstart-topic" - - -> MyService2 -> - |- - - MyService5 | | | | | | - -> MyService3 -> - |- - - MyService6 --> <providers> <jms-provider name="JBossMQ" connection-factory="ConnectionFactory" jndi-context-factory="org.jnp.interfaces.NamingContextFactory" jndi-URL="localhost"> <jms-bus busid="abw-topic"> <jms-message-filter dest-type="TOPIC" dest-name="topic/abw_jmstopic_topic" /> </jms-bus> <jms-bus busid="abw-queue-s1"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_jmstopic_queue_s1" /> </jms-bus> <jms-bus busid="abw-queue-s2"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_jmstopic_queue_s2" /> </jms-bus> <jms-bus busid="abw-queue-s3"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_jmstopic_queue_s3" /> </jms-bus> <jms-bus busid="abw-queue-response-gtw"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_jmstopic_queue_response_gtw"/> </jms-bus> <jms-bus busid="abw-queue-response-srv"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_jmstopic_queue_response_srv"/> </jms-bus> <jms-bus busid="abwEsbChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/abw_Request_esb" /> </jms-bus> </jms-provider> </providers> <services> <service category="MyServiceCategory" name="xxService" description="xxService"> <listeners> <jms-listener name="JMS-Gateway" busidref="abw-topic" is-gateway="true" /> <jms-listener name="JMS-ESBListener" busidref="abw-queue-s1" /> </listeners> <actions mep="OneWay"> <action name="request-mapper" class="pl.edu.pk.mech.ljarzyna.abw.actions.xxRequestAction" process="option1"> </action> <action name="soapui-client-action" class="org.jboss.soa.esb.actions.soap.SOAPClient"> <property name="wsdl" value="http://127.0.0.1:8080/xx/xxImpl?wsdl" /> <property name="operation" value="sayHello" /> <property name="responseAsOgnlMap" value="true" /> <property name="SOAPAction" value="sayHello"/> </action> <action name="response-mapper" class="pl.edu.pk.mech.ljarzyna.abw.actions.xxResponseAction"> </action> <action name="routeBack" class="org.jboss.soa.esb.actions.routing.JMSRouter"> <property name="jndiName" value="queue/abw_jmstopic_queue_response_gtw" /> <property name="unwrap" value="true" /> </action> </actions> </service> </services> </jbossesb>
sendjms class
package pl.edu.pk.mech.ljarzyna.abwportal.searchbroker; import java.util.HashMap; import java.util.Map; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Queue; import javax.jms.Session; import javax.jms.Topic; import javax.naming.InitialContext; import javax.naming.NamingException; import org.jboss.soa.esb.client.ServiceInvoker; import org.jboss.soa.esb.message.Message; import org.jboss.soa.esb.message.format.MessageFactory; import org.jboss.soa.esb.message.format.MessageType; public class SendJMSMessage { // QueueConnection conn; // QueueSession session; Topic que; Queue queue; Connection connection; Session session; public void setupConnection() throws JMSException, NamingException { InitialContext iniCtx = new InitialContext(); Object tmp = iniCtx.lookup("ConnectionFactory"); ConnectionFactory qcf = (ConnectionFactory) tmp; connection = qcf.createConnection(); que = (Topic) iniCtx.lookup("topic/abw_jmstopic_topic"); queue = (Queue) iniCtx.lookup("queue/abw_jmstopic_queue_response_gtw"); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); connection.start(); System.out.println("Connection Started"); } public void stop() throws JMSException { connection.stop(); session.close(); connection.close(); } public void sendAMessage(String msg) throws JMSException { MessageProducer publisher = session.createProducer(que); MessageConsumer subscriber = session.createConsumer(queue); ObjectMessage tm = session.createObjectMessage(msg); publisher.send(tm); ObjectMessage message = (ObjectMessage) subscriber.receive(5000); if ( message == null) System.out.println("null"); System.out.println("a: " + ((Message)message.getObject()).getBody().get()); } }
I want to send a jms topic to 3 services and they will do something and after that they sould return a response which will be displayed on jsp. Right now i get null message and don't know why.
Could anyone help me with this ?