`

在JBoss中开发自己的消息驱动Bean

    博客分类:
  • J2EE
阅读更多

JBoss中先用xml文件定义我们的消息管道

定义规则是后最为XXXXXX-service.xml文件,

我定义为snailteam-service.xml

 

定义我们的Queue消息管道

name=snailteamQueue

JNDIName  queue/snailteam

 

定义我们的

Topic消息管道

name=snailteamTopic

JNDIName  topic/snailteamTopic

如下

 

<?xml version="1.0" encoding="UTF-8"?>
<server>
	<!-- 在Jboss中用xml定义Queue消息管道,单用户发送,接受为单用户 -->
	<mbean code="org.jboss.mq.server.jmx.Queue"
		   name="jboss.mq.destination:service=Queue,name=snailteamQueue">
		<attribute name="JNDIName">queue/snailteamQueue</attribute>
		<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>	   
    </mbean>
    
    <!-- 在Jboss中用xml定义Topic消息管道,单用户发送,接受可为单用户 -->
    <mbean code="org.jboss.mq.server.jmx.Topic"
		   name="jboss.mq.destination:service=Topic,name=snailteamTopic">
		<attribute name="JNDIName">topic/snailteamTopic</attribute>
		<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>	   
    </mbean>
</server>

 

放到目录中

 

Myeclipse中启动JBoss,

控制台观察到如下信息,说明发布成功

 

[TopicService] Topic[topic/snailteamTopic] started, fullSize=200000, pageSize=2000, downCacheSize=2000
 
[QueueService] Queue[queue/snailteamQueue] started, fullSize=200000, pageSize=2000, downCacheSize=2000

 

接着写我们服务端的消息管道监听Bean(消息驱动Bean)

 

Myeclipse中新建一个EJB项目,

别忘了将JBoss的jar包添加进我们的lib中

 



package org.snailtea.message;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(activationConfig = {
		//propertyValue = "javax.jms.Queue" 用来监听javax.jms.Queue消息
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
		//propertyValue = "queue/snailteamQueue" 监听的消息管道
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/snailteamQueue"),

})
public class MessageDrivenBean implements MessageListener {

	public void onMessage(Message message) {
		//Message接受到的消息,我们发送的是TextMessage。
		TextMessage msg = (TextMessage)message;
		try {
			//简单的把消息控制台输出
			System.out.println(msg.getText());
		} catch (JMSException e) {
			 
			e.printStackTrace();
		}
	}

}
 

同样的步骤,新建一个消息Bean,ReceiveBean

package org.snaiteam.message;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;


@MessageDriven(mappedName = "jms/ReceiveBean", activationConfig = {
		//propertyValue = "topic/snailteamTopic" 监听的消息管道
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/snailteamTopic"),
		//propertyValue = "javax.jms.Topic" 用来监听javax.jms.Topic消息
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic") })
public class ReceiveBean implements MessageListener {
	public void onMessage(Message message) {
		TextMessage msg = (TextMessage) message;
		try {
			//简单的打印我们的消息 
			System.out.println(this.getClass()+msg.getText());
		} catch (JMSException e) {
			e.printStackTrace();
		}
	}

}
 

开发好我们消息驱动Bean了,发布到JBoss容器中

 


控制台会输出

STARTED EJB: org.snaiteam.message.MessageDrivenBean ejbName: MessageDrivenBean
STARTED EJB: org.snaiteam.message.ReceiveBean ejbName: ReceiveBean

 发布成功。

 

开发我们的客户端,

为了能找到JBossRMI接口

我们需要定义一个jndi.properties文件,src目录下

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099

 

 

新建一个类 QueueSender.java

 

	public static void main(String[] args) {
		try {
			//读取jndi.properties文件中的参数
			InitialContext ctx = new InitialContext();
			
			//连接JBoss连接工厂
			QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
			QueueConnection conn = factory.createQueueConnection();
			
			//false不需要事务
			QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
			
			//查找queue/snailteamQueue消息管道
			Destination destination = (Destination)ctx.lookup("queue/snailteamQueue");
			MessageProducer producer = session.createProducer(destination);
			
			//向管道发送消息
			producer.send(session.createTextMessage("中国小樊"));	
			//关闭连接会话
			session.close();
			//关闭连接
			conn.close();
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

新建一个类 TopicSender.java

public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			//读取jndi.properties文件中的参数
			InitialContext ctx = new InitialContext();
			
			//连接JBoss连接工厂
			TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("ConnectionFactory");
			TopicConnection conn = factory.createTopicConnection();
			
			//false不需要事务
			TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);//false不需要事务
			
			//查找topic/snailteamTopic消息管道
			Destination destination = (Destination)ctx.lookup("topic/snailteamTopic");
			MessageProducer producer = session.createProducer(destination);
			
			//向管道发送消息
			producer.send(session.createTextMessage("中国小樊"));
			session.close();
			conn.close();
			System.out.println("ok");
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

运行,观察我们的控制台,JBoss是否会输出我们发送的消息

我们可以多写几个消息Bean,用来监听JBoss容器的消息管道。

 

  • 大小: 32.2 KB
  • 大小: 55.8 KB
  • 大小: 18.8 KB
  • 大小: 53 KB
分享到:
评论
1 楼 javafw 2012-01-11  
找到了想要的,谢谢。

相关推荐

    ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)

    在本教程中,我们将深入探讨如何在JBOSS 4.0.4.GA环境下开发和部署ejb2.0的消息驱动Bean。 【描述】: 尽管没有提供具体的描述,但我们可以推断,这篇博客可能涵盖了以下内容:设置JBOSS服务器环境,配置JMS资源,...

    Jboss下开发ejb应用之一消息驱动bean的应用

    在"Jboss下开发ejb应用之一消息驱动bean的应用.doc"文档中,可能包含了关于如何在Jboss环境中创建、配置和测试MDB的详细步骤,包括具体的代码示例、配置文件内容和可能出现的问题及解决方案。建议详细阅读此文档,以...

    Jboss下开发ejb应用之一实体bean的应用

    对于实体Bean中的属性,可以使用`@Id`注解声明主键,通常配合`@GeneratedValue`注解自动生成主键值。其他字段可以使用`@Column`注解进行数据库列的映射。如果需要处理一对一、一对多或多对多的关系,可以使用`@...

    EJB2和EJB3 消息驱动bean

    消息驱动Bean是Java EE中用于处理异步消息的一种特殊类型的EJB。在EJB2中,MDB主要用于接收来自消息队列或主题的消息,处理后可进一步触发业务逻辑或其他操作。 ##### 2. **创建queue和topic** 在JBOSS中,创建...

    jboss4开发指南

    - **版本背景**:JBoss4.0.x是基于JBoss3.2.x开发而来,继承了后者在企业级应用中的稳定性,并在此基础上进行了功能增强和技术升级。 - **J2EE1.4认证**:JBoss4.0.x获得了J2EE1.4认证,意味着它支持最新的Java企业...

    Jboss下开发ejb应用之一会话bean的应用

    EJB分为三种主要类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-driven Beans)。 二、会话Bean 会话Bean代表客户端的临时业务逻辑,它们不持久化数据,而是处理业务逻辑并...

    Eclipse+Jboss EJB技术 会话Bean

    在实验中,你可能还会学习到EJB的接口定义、实体Bean(Entity Bean,用于持久化数据)、消息驱动Bean(Message-Driven Bean,用于处理消息队列)以及EJB的生命周期管理。此外,理解EJB容器如何处理事务、安全性、...

    EJB三种bean的开发模式

    在JBoss这样的应用服务器中,EJB提供了三种主要的bean类型:实体Bean(Entity Bean)、会话Bean(Session Bean)和消息驱动Bean(Message-Driven Bean)。下面将详细探讨这三种bean的开发模式。 1. 实体Bean...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    总结来说,使用Eclipse和JBoss开发EJB 3.x应用是一种高效且灵活的方式,它结合了IDE的强大功能和EJB的高级服务。通过注解驱动的编程模型和强大的依赖注入机制,开发者可以专注于业务逻辑,而不是繁琐的基础设施代码...

    jboss 6.0 上开发 MDB

    在Java企业级应用中,Message Driven Bean (MDB) 是一种特殊类型的Enterprise JavaBean (EJB),用于处理异步消息。MDBs 主要用于接收和处理来自消息中间件(如JMS, Java Message Service)的消息,是实现解耦和基于...

    基于JBOSS的J2EE开发(PDF)

    3. **EJB开发**:详述EJB3.1规范,包括实体Bean、会话Bean和消息驱动Bean的创建与使用,以及无状态和有状态会话Bean的区别。 4. **Servlet和JSP**:介绍Servlet生命周期、JSP页面转换过程,以及如何在JBOSS上配置和...

    JBoss开发实践指南

    对于EJB,会详细讨论实体Bean、会话Bean和消息驱动Bean的开发与管理,包括生命周期管理、事务处理、安全性设置等内容。 JBoss对Web服务的支持也是本书的重点之一。读者将学习如何在JBoss上创建和发布SOAP和RESTful ...

    精通JBoss——EJB与Web Services开发精解

    EJB组件主要有三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans),分别对应于临时逻辑、持久化对象和异步消息处理。 EJB的开发涉及到多个关键概念,如容器...

    使用Eclipse+Jboss+MySql开发EJB

    在IT行业中,开发企业级应用程序通常涉及到多个技术的集成,如Eclipse作为IDE,Jboss作为应用服务器,以及MySql作为数据库系统。本教程将详细阐述如何利用这些工具来开发EJB(Enterprise JavaBeans)。 **Eclipse**...

    JBOSS_ESB_开发手册

    ### JBoss ESB 开发手册概览 #### JBoss ESB 的主要特性 JBoss ESB,即Enterprise Service Bus,是Red Hat JBoss家族中的一员,专注于企业级服务总线解决方案,旨在简化不同应用程序间的集成与通信。其核心功能...

    JBoss管理与开发核心技术.第3版.pdf.7z

    1. **EJB 3.x**:深入讲解企业级JavaBeans 3.x规范,包括无注解编程、会话bean、实体bean、消息驱动bean的使用,以及持久化机制。 2. **JPA与Hibernate**:介绍Java Persistence API和Hibernate的关系,如何配置...

    jboss ejb3.0开发介绍

    本文将详细介绍如何使用 jBoss AS 4.2 和 MyEclipse 6.5 进行 EJB 3.0 的实体 Bean 开发。 #### 二、环境搭建 1. **安装开发工具** - **MyEclipse 6.5**: 一个基于 Eclipse 的集成开发环境,支持 Java 应用程序...

    eclipse + JBoss 5 + EJB3开发指南中的代码

    在本文中,我们将深入探讨如何使用Eclipse集成开发环境(IDE)与JBoss Application Server 5相结合,利用Enterprise JavaBeans(EJB)3.0规范进行应用程序开发。EJB3是Java EE(企业版)平台的一个重要组成部分,它...

Global site tag (gtag.js) - Google Analytics