go4it

just do it

消息驱动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!

posted on 2009-01-17 18:26  cxccbv  阅读(615)  评论(0)    收藏  举报

导航