Environment: JBoss 5.1GA, Active MQ 5.2 embeded broker configuration
I want to send a message to a topic when receiving one message in a MDB, but
it can't be successful all the time, any one can help me? I have struggled
in it about 2 weeks.
It is my sample code:
package com.trading.platform.ejb;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.trading.platform.context.ServerContext;
import com.trading.platform.exception.InvokeException;
import com.trading.platform.exception.SystemException;
import com.trading.platform.handler.MessageHandler;
import com.trading.platform.log.ILogger;
import com.trading.platform.log.Logger;
public class OrderResponseMDB implements MessageDrivenBean, MessageListener{
private ILogger logger = Logger.getLogger(this.getClass());
private MessageDrivenContext messageDrivenContext;
private volatile TopicConnectionFactory topicConnnectionFactory;
private volatile Topic topic;
private void getInitialContext(){
try {
Context context = new InitialContext();
topicConnnectionFactory =
(TopicConnectionFactory)context.lookup("java:comp/env/jms/TopicConnectionFactory");
//topic =
(Topic)context.lookup("java:comp/env/jms/OrderBroadcastTopic");
if(logger.isDebugEnabled())
logger.debug("Platform:Publisher Topic
Session connnection is created..." );
} catch (NamingException e) {
if(logger.isErrorEnabled())
logger.error("NamingExcetion:" + e);
throw new SystemException("System Error", e);
}
}
public void onMessage(Message inMessage) {
TopicConnection topicConn = null;
try {
if (inMessage instanceof TextMessage) {
TextMessage txtmsg = (TextMessage)inMessage;
System.out.println("MESSAGE BEAN3: Message received:
index="+txtmsg.getText());
topicConn =
topicConnnectionFactory.createTopicConnection();
topicConn.start();
TopicSession topicSession =
topicConn.createTopicSession(false,
TopicSession.AUTO_ACKNOWLEDGE);
topic =
topicSession.createTopic("topic.orderbroadcast");
TopicPublisher publisher =
topicSession.createPublisher(topic);
TextMessage newMsg =
topicSession.createTextMessage("11111");
publisher.send(newMsg);
//publisher.close();
//topicSession.close();
topicConn.close();
} else {
System.out.println("WRONG MESSAGE TYPE received: " +
inMessage.getClass().getName());
}
} catch (Throwable t) {
System.out.println("error...");
t.printStackTrace();
messageDrivenContext.setRollbackOnly();
try {
if (topicConn != null) topicConn.close();
System.out.println("MESSAGE BEAN: Rollback:
index="+((TextMessage)inMessage).getText());
} catch (Exception e) {
System.out.println("MESSAGE BEAN: Unable to get index
property because:"+e.getMessage());
e.printStackTrace();
}
throw new RuntimeException(t.getMessage());
}
}
public void ejbCreate(){
System.out.println("ConnectionFactory created...");
getInitialContext();
}
public void ejbRemove(){
}
public void setMessageDrivenContext(MessageDrivenContext
messageDrivenContext){
this.messageDrivenContext = messageDrivenContext;
}
}
The following is the exception information:
14:59:09,601 WARN [Service] Async error occurred:
javax.transaction.xa.XAException: Transaction
'XID:131075:312d613061383764343a313862333a34616134616561303a3662:613061383764343a313862333a34616134616561303a3663'
has not been started.
javax.transaction.xa.XAException: Transaction
'XID:131075:312d613061383764343a313862333a34616134616561303a3662:613061383764343a313862333a34616134616561303a3663'
has not been started.
at
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:266)
at
org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:208)
at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:126)
at
org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:133)
at
org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:455)
at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:639)
at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
at java.lang.Thread.run(Thread.java:595)
14:59:09,614 WARN [ActiveMQManagedConnection] Connection failed:
javax.jms.JMSException: Transaction
'XID:131075:312d613061383764343a313862333a34616134616561303a3662:613061383764343a313862333a34616134616561303a3663'
has not been started.
14:59:09,615 WARN [TxConnectionManager] Connection error occured:
org.jboss.resource.connectionmanager.txconnectionmanager$txconnectioneventliste...@18936ae[state=normal
mc=org.apache.activemq.ra.activemqmanagedconnect...@1365339 handles=0
lastUse=1252306749595 permit=false trackByTx=false
mcp=org.jboss.resource.connectionmanager.jbossmanagedconnectionpool$onep...@191c3ce
context=org.jboss.resource.connectionmanager.internalmanagedconnectionp...@ce1472
xaresource=org.apache.activemq.ra.activemqmanagedconnectio...@164e48d
txSync=null]
javax.jms.JMSException: Transaction
'XID:131075:312d613061383764343a313862333a34616134616561303a3662:613061383764343a313862333a34616134616561303a3663'
has not been started.
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
at
org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1784)
at
org.apache.activemq.ActiveMQConnection$2$1.run(ActiveMQConnection.java:1705)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.transaction.xa.XAException: Transaction
'XID:131075:312d613061383764343a313862333a34616134616561303a3662:613061383764343a313862333a34616134616561303a3663'
has not been started.
at
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:266)
at
org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:208)
at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:126)
at
org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:133)
at
org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:455)
at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:639)
at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
... 1 more
--
View this message in context:
http://www.nabble.com/How-to-send-one-message-to-a-topic-in-MDB--tp25325925p25325925.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.