JMS Request & Reply

本文探讨了Java消息服务(JMS)中的一种常见异常javax.jms.InvalidDestinationException,并通过一个具体的示例展示了如何在不使用消息驱动Bean(MDB)的情况下进行处理。此外,还提供了一个MDB实现的消息监听器示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public String send(LogEntry log) { 
try {
// QueueSender queuesender = queueSession.createSender(queue); QueueRequestor queueRequestor = new QueueRequestor(queueSession, queue); queueConnection.start();
ObjectMessage ob = queueSession.createObjectMessage(log);
// TextMessage txs = queueSession.createTextMessage();
// txs.setText("I'am zhuyefeng !it's true");
TextMessage reply = (TextMessage) queueRequestor.request(ob);
String replys = reply.getText();
return replys; }
catch (JMSException e)
{ // TODO Auto-generated catch block
e.printStackTrace();
return null; }finally{ destroy(); } }

public void destroy() {
try {
queueConnection.close();
queueSession.close(); }
catch (JMSException e)
{ // TODO Auto-generated catch block
e.printStackTrace(); } }

 
@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myQueue") }) @TransactionManagement(TransactionManagementType.BEAN)

public class ReplyMDB implements MessageListener { public void onMessage(Message msg) {
InitialContext context;
QueueConnectionFactory queueConnectionFactory;
QueueConnection queueConnection = null; QueueSession queueSession = null; Queue queue = null;
QueueSender queuesender = null ; TextMessage tm = null ;

try { context = new InitialContext();
queueConnectionFactory = (QueueConnectionFactory) context .lookup("ConnectionFactory");
queue = (Queue) context.lookup("queue/myQueue");
queueConnection = queueConnectionFactory.createQueueConnection(); queueConnection.start();
queueSession = queueConnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
tm = queueSession.createTextMessage(); tm.setJMSReplyTo(queue);
// queueReceiver = queueSession.createReceiver(queue);
ObjectMessage om = (ObjectMessage) msg;
LogEntry lg = (LogEntry) om.getObject();
queuesender = queueSession.createSender((Queue)om.getJMSReplyTo()); tm.setText("OK"); queuesender.send(tm); }
catch (JMSException e) {
e.printStackTrace();
try { tm.setText("NG"); queuesender.send(tm); }
catch (JMSException e1) { e1.printStackTrace(); } }
catch (NamingException e) { e.printStackTrace(); }
finally{ try { queueConnection.close(); queueSession.close(); }
catch (JMSException e) { e.printStackTrace(); } } }


不使用MDB时 ,产生javax.jms.InvalidDestinationException :This destination does not exist!异常,原因调查中!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值