消息驱动bean(三)---点到点
MDB代码:
package com.persia.ejb; import javax.ejb.MessageDriven; import javax.ejb.ActivationConfigProperty; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; @MessageDriven( activationConfig={ @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="destination",propertyValue="queue/myqueue") } ) public class MyptopMDB implements MessageListener { public void onMessage(Message msg) { try { TextMessage tm=(TextMessage)msg; System.out.println("my ptop mdb 被调用 "+tm.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
客户端代码:
package com.persia.ejb.mdb; import java.util.Properties; import javax.jms.JMSException; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.TextMessage; import javax.naming.InitialContext; import javax.naming.NamingException; public class MdbClient { /** * @param args * @throws NamingException * @throws JMSException */ public static void main(String[] args) throws NamingException, JMSException { Properties props=new Properties(); props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url","localhost:1099"); props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming"); InitialContext context=new InitialContext(props); //获得QueueConnectionFactory对象 QueueConnectionFactory factory=(QueueConnectionFactory) context.lookup("ConnectionFactory"); //创建QueueConnection QueueConnection connection=factory.createQueueConnection(); //创建QueueSession对象 QueueSession session=connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); //获取destination对象 Queue queue=(Queue) context.lookup("queue/myqueue"); //创建文本消息 TextMessage txt=session.createTextMessage("hello persia!"); //创建发送者 QueueSender sender=session.createSender(queue); //发送消息 sender.send(txt); //关闭会话 session.close(); connection.close(); System.out.println("消息已经发送!"); } }
控制台输出:
客户端:
消息已经发送!
服务端:
16:39:07,921 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
16:39:07,937 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
16:39:07,953 INFO [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 24s:985ms
16:39:37,937 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.mdb.MDB
16:39:37,937 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=MDBdemo.jar,name=MyptopMDB,service=EJB3 with dependencies:
16:39:37,953 INFO [EJBContainer] STARTED EJB: com.persia.ejb.MyptopMDB ejbName: MyptopMDB
16:39:37,953 WARN [MessagingContainer] Could not find the queue destination-jndi-name=queue/myqueue
16:39:37,953 WARN [MessagingContainer] destination not found: queue/myqueue reason: javax.naming.NameNotFoundException: myqueue not bound
16:39:37,953 WARN [MessagingContainer] creating a new temporary destination: queue/myqueue
16:39:37,968 INFO [myqueue] Bound to JNDI name: queue/myqueue
16:39:38,000 INFO [EJB3Deployer] Deployed: file:/D:/DevelopTool/jboss-4.2.2.GA/server/default/deploy/MDBdemo.jar/
17:34:30,343 INFO [STDOUT] my ptop mdb 被调用 hello persia!
浙公网安备 33010602011771号