`
youngmaster
  • 浏览: 58497 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EJB:事件驱动 bean ---Queue

阅读更多

创建一个简单的工具类:

//ContextFactory.java

 

package com.youngmaster.jms.utils;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 1:55:42 AM
 */
public class ContextFactory {

	@SuppressWarnings("unchecked")
	public static Context getContext() throws Exception {
		Hashtable props = new Hashtable();

		props.put(Context.INITIAL_CONTEXT_FACTORY,
				"org.jnp.interfaces.NamingContextFactory");

		props.put(Context.PROVIDER_URL, "localhost:1099");

		props.put("java.naming.rmi.security.manager", "yes");

		props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");

		@SuppressWarnings("unused")
		Context context = new InitialContext(props);
		return context;
	}

}

 

创建一个简单的java bean:

//Employee.jva

package com.youngmaster.jms.objectmsg;

import java.io.Serializable;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 2:30:54 AM
 */
@SuppressWarnings("serial")
public class Employee implements Serializable {
	
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
 

 

发送端:

//Sender.java

 

package com.youngmaster.jms.sender;

import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;

import com.youngmaster.jms.objectmsg.Employee;
import com.youngmaster.jms.utils.ContextFactory;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 3:03:08 AM
 */
public class Sender {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		
		/**
		 * access Context
		 */
		Context context=ContextFactory.getContext();
		
		/**
		 * access QueueConnectionFactory
		 */
		QueueConnectionFactory factory=(QueueConnectionFactory) context.lookup("ConnectionFactory");
		
		/**
		 * access QueueConnection
		 */
		QueueConnection connection=factory.createQueueConnection();
		
		/**
		 * access QueueSession
		 */
		@SuppressWarnings("unused")
		QueueSession queueSession =connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

		/**
		 * create distination
		 */
		Queue queue = (Queue) context.lookup("queue/testQueue");

		QueueSender sender = queueSession.createSender(queue);

		/**
		 * create objectmsg
		 */
		ObjectMessage objectmessage = queueSession.createObjectMessage();

		Employee employee = new Employee();

		employee.setName("youngmaster");

		objectmessage.setObject(employee);

		sender.send(queue, objectmessage);

		queueSession.close();
		connection.close();

	}

}

 

接送端:

//Receive.java

 

package com.youngmaster.jms.receive;

import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;

import com.youngmaster.jms.utils.ContextFactory;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 3:11:09 AM
 */
public class Receive {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {

		/**
		 * access Context
		 */
		Context context = ContextFactory.getContext();

		/**
		 * access QueueConnectionFactory
		 */
		QueueConnectionFactory factory = (QueueConnectionFactory) context
				.lookup("ConnectionFactory");

		/**
		 * access QueueConnection
		 */
		QueueConnection connection = factory.createQueueConnection();
		
		/**
		 * access QueueSession
		 */
		@SuppressWarnings("unused")
		QueueSession queueSession = connection.createQueueSession(false,
				Session.AUTO_ACKNOWLEDGE);

		/**
		 * create distination
		 */
		Queue queue = (Queue) context.lookup("queue/testQueue");

		/**
		 * access QueueReceiver
		 */
		QueueReceiver queueReceiver = queueSession.createReceiver(queue);
		queueReceiver.setMessageListener(new MyReceive());
		connection.start();
	}

}

 

创建一个监听器:

//MyReceive.java

 

package com.youngmaster.jms.receive;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;

import com.youngmaster.jms.objectmsg.Employee;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 3:11:21 AM
 */
public class MyReceive implements MessageListener {

	public void onMessage(Message arg0) {

		ObjectMessage ob = (ObjectMessage) arg0;
		Employee employee;
		try {
			employee = (Employee) ob.getObject();
			System.out.println(employee.getName());
		} catch (JMSException e) {
			e.printStackTrace();
		}

	}

}
 

 

分享到:
评论
1 楼 zhouwendong006 2010-02-01  
这个怎么做测试啊?我怎么看不到效果?

相关推荐

    EJB2和EJB3 消息驱动bean

    ### EJB2与EJB3消息驱动Bean:深入解析与应用 #### 一、EJB2消息驱动Bean ##### 1. **理解消息驱动Bean(MDB)** 消息驱动Bean是Java EE中用于处理异步消息的一种特殊类型的EJB。在EJB2中,MDB主要用于接收来自消息...

    ejb 消息驱动Bean例子

    消息驱动Bean(Message Driven Bean,MDB)是EJB的一种特殊类型,它专注于处理消息队列(Queue)或主题(Topic)中的消息,实现异步处理。在本例中,我们将探讨如何使用EJB消息驱动Bean处理Queue和Topic。 1. **...

    JavaEE5学习笔记06-EJB之消息驱动Bean总结

    ### Java EE 5 学习笔记06:EJB之消息驱动Bean总结 #### EJB 消息驱动 Bean (Message Driven Bean, MDB) 在Java EE 5中,消息驱动Bean(MDB)是一种特殊的EJB组件,它主要用于处理异步消息。MDB能够接收并处理由...

    ejb3.0第11讲 --开发消息驱动bean

    本讲将深入探讨EJB 3.0中的消息驱动Bean(Message Driven Bean,MDB),这是一种特殊类型的EJB,专门设计用于处理JMS(Java Message Service)消息。 消息驱动Bean的主要功能是异步接收和处理消息。这使得应用程序...

    消息驱动bean EJB 3.0

    **消息驱动Bean (Message Driven Bean, MDB) 是企业级JavaBeans (Enterprise JavaBeans, EJB) 3.0 规范中引入的一种组件模型,主要用于处理异步消息通信。在分布式应用程序中,MDB 提供了一种高效且解耦的方式来处理...

    java EJB3实现三种Bean设计文档.doc

    本文档主要介绍了在Java EJB3环境中,如何实现三种不同类型的Bean:实体Bean(Entity Bean)、会话Bean(Session Bean)和消息驱动Bean(Message-Driven Bean)。 1. 开发环境: - **MyEclipse 7.0**:这是一个...

    java源码:Message-Driven Bean EJB实例源代码.zip

    Java消息驱动Bean(Message-Driven Bean,MDB)是企业级JavaBeans(Enterprise JavaBeans,EJB)的一个组件类型,主要用于处理JMS(Java Message Service)消息。本实例源代码提供了关于如何实现和使用MDB的详细示例...

    ejb状态bean和消息bean的源代码

    在EJB中,我们主要关注两种类型的Bean:状态Bean(Stateful Session Bean)和消息Bean(Message-driven Bean)。下面将详细阐述这两种Bean的特点、用途以及它们的源代码结构。 ### 1. 状态Bean(Stateful Session ...

    Message-Driven Bean EJB实例源代码

    消息驱动Bean(Message-Driven Bean,MDB)是Enterprise JavaBeans(EJB)规范中的一个重要组件,主要用于处理异步消息通信。在Java企业级应用中,MDBs被用来接收和响应JMS(Java Message Service)消息,从而解耦...

    EJB3使用说明中文版

    **5.1 消息驱动 Bean (Message Driven Bean)**: - 用于处理异步消息。 - 使用 `@MessageDriven` 注解定义。 **5.1.1 Queue 消息的发送与接收 (PTP 消息传递模型)**: - PTP 模型表示点对点模型。 - 发送者发送消息...

    java笔试题大集合及答案(jsp-java-ejb公司笔试题)

    - **EJB类型**:会话bean(Stateless和Stateful)、实体bean(Entity Bean, 包括Bean-managed Persistence和Container-managed Persistence)、消息驱动bean(Message-driven Bean)。 - **EJB容器**:提供事务...

    基于Java的源码-Message-Driven Bean EJB实例源代码.zip

    Message-Driven Bean是一种特殊的session bean,它以事件驱动的方式工作,专门用于接收和处理JMS消息。当消息队列中有新消息到达时,MDB会自动激活,处理消息,然后返回到等待状态。这种模式在处理大量并发请求或者...

    Java-J2EE 最新ejb3.0实例教程

    - **消息驱动Bean (Message Driven Bean)**:通过实例介绍了如何使用消息驱动Bean来处理队列(Queue)和主题(Topic)的消息。 - **消息传递模型**:比较了点对点(PTP)和发布/订阅(Pub/Sub)两种消息传递模型,并给出了...

    EJB3.0知识点归纳

    EJB 3.0 引入了许多新特性,包括简化了部署描述符、提供了更强大的生命周期管理功能以及支持注解驱动的开发模式。通过了解这些基本概念和组件,开发者可以更好地利用 EJB 技术构建可靠的企业级应用。

    ejb3.0实例教程

    - **EJB的概念**:介绍EJB的历史背景、分类(会话Bean、实体Bean、消息驱动Bean)及其在企业级应用中的作用。 - **打包与部署**:详解如何进行EJB、Web应用和企业应用的打包,以及如何处理第三方类库的集成问题。 ...

    Jboss EJB3.0 实例教程.pdf

    - **消息驱动Bean (Message-Driven Bean)**:专门用于处理异步消息,支持队列(Queue)和主题(Topic)两种消息传递模型。 - **队列消息**:基于点对点(PTP)的消息传递模型。 - **主题消息**:基于发布/订阅(Pub/Sub)...

    EJB3.0开发Message Driven Bean.rar

    **EJB 3.0 开发Message Driven Bean详解** Enterprise JavaBeans (EJB) 是Java平台上用于构建可扩展、安全且事务处理能力强的企业级应用的技术。EJB 3.0是EJB规范的一个重要版本,它引入了大量简化开发的特性,其中...

    EJB3.0部署消息驱动Bean抛javax.naming.NameNotFoundException异常

    消息驱动Bean(Message-Driven Beans,简称MDB)是EJB中一种特殊类型的无状态会话Bean,用于处理异步消息。MDB能够接收来自Java消息服务(JMS)的消息,并对这些消息作出响应。在部署MDB时,可能会遇到一些问题,...

    EJB3.0中文资料

    - **消息驱动Bean**: 处理异步消息。 ##### 3.2 基于STRUTS+EJB 3.0应用的体系结构图 - **表示层**: 通常由Struts框架负责。 - **业务逻辑层**: 由EJB 3.0中的会话Bean处理。 - **数据访问层**: 实体Bean或JPA实现...

Global site tag (gtag.js) - Google Analytics