Jboss下开发ejb应用之一消息驱动bean的应用,这是一篇紧接着学习会话bean和实体bean之后而写的
JMS(Java Message Service):即Java消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。
消息驱动bean(Message-Driven Bean):用于接收异步JMS消息,容器处理JMS消息队列(Queue)和主题(Topic)所需的大部分设置进程,把所有消息发送给相关的MDB。MDB是唯一必须实现javax.jms.MessageListener业务接口的bean,该接口指出bean支持的是哪一类型的消息系统。
消息的两种处理方式:
1)发布/订阅(Publish/Subscribe 简写Pub/Sub):一个消息生产者(Publisher)发布消息(Message)到主题(Topic)上,系统/容器将这个消息传递给多个消息消费者/消息接收者(Subscriber),当然存在多个消息生产者发布消息,这样就会形成多对多消息生产消费关系。消息生产者只关心发布消息到主题(Topic)上,消息生产者不关心消息是否被接收或者消息接收者现在是否存在。
消息反馈特点:
1.1) 每个消息可以有多个消费订阅者,当然允许只有一个消息订阅者。
1.2) 消息发布者和消息订阅者之间有时间上的依赖性。针对某个主题(Topic)的消息订阅者,它必须创建一个订阅之后,才能消费消息发布者的消息,而且,为了消费消息,订阅者必须保持运行的状态。当然,为了缓和这种严格的时间相关性,JMS允许消息订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到消息发布者的消息。
1.3) 如果你希望发送的消息可以不被做任何处理、或者被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。
概念:主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。
2)点对点(Point-to-Point 简称P2P):每个消息(Message) 只会发给一个消息消费者(Consumer/ Receiver)(即消息一旦被消费,此消息在消息队列中就不存在了),多个消息生产者(Producer /Sender)可以把多个消息同时发送到消息队列(Queue)中,消息接收者从消息队列中获取消息。队列保留着消息,直到它们被消费或超时。
消息反馈特点:
2.1)消息发送者和消息接收者之间在时间上没有依赖性,也就是说当消息发送者发送了消息之后,不管消息接收者有没有正在运行,它不会影响到消息被发送到队列。
2.2)消息接收者在成功接收消息之后需向消息队列应答成功与否,如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模型。
概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。
JMS客户端创建或者接收消息的步骤:
1)查找JMS提供者-----找到消息连接工厂
2)创建JMS连接-----创建消息连接
3)创建JMS Session-----创建消息session对象
4)查找JMS目的地-----借助JNDI查找JMS目的地,即是哪个消息驱动bean(Queue)或者哪些消息驱动bean(Topic)
5)创建JMS生产者或消费者-----借助session和destination对象,客户能获得消息的生产者和消费者
6)发送或接收消息-----构建消息,借助生产者发送,消费者接收
注意把消息驱动bean的配置文件cmsmdb-service.xml放到jboss的部署目录下如果是all方式,则放到$JBOSS_HOME\server\all\deploy\jms目录下
另外注意的是消息接收者这个客户端应用应该先启动,消息发布者这个客户端应用要后启动才能看到这个消息被接收
本人采用jboss的版本是jboss-4.2.2.GA
服务端,客户端工程项目我都发布上来 server-client-project.rar中cms项目是消息驱动bean的服务端程序,ejbclient项目是客户端调用项目
以供大家参考
分享到:
相关推荐
标题:“Jboss下开发ejb应用之一实体bean的应用” 首先,理解EJB实体Bean的含义至关重要。实体Bean代表持久化的业务对象,它们与数据库中的记录相对应,负责存储和检索数据。EJB 3.0引入了注解驱动的开发方式,大大...
EJB分为三种主要类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-driven Beans)。 二、会话Bean 会话Bean代表客户端的临时业务逻辑,它们不持久化数据,而是处理业务逻辑并...
在本教程中,我们将深入探讨如何在JBOSS 4.0.4.GA环境下开发和部署ejb2.0的消息驱动Bean。 【描述】: 尽管没有提供具体的描述,但我们可以推断,这篇博客可能涵盖了以下内容:设置JBOSS服务器环境,配置JMS资源,...
在本文中,我们将深入探讨如何使用Eclipse IDE与JBoss应用程序服务器(版本7.x)来开发和部署一个基于EJB 3.x的简单企业级Java应用程序。EJB(Enterprise JavaBeans)是Java平台上的核心组件,它提供了一种标准的...
例如,`@Stateless`、`@Stateful`、`@MessageDriven`和`@Remote`等注解分别用于声明无状态会话bean、有状态会话bean和消息驱动bean及其接口。 2. **persistence.xml**:对于实体bean,EJB 3.0使用JPA(Java ...
### EJB2与EJB3消息驱动Bean:深入解析与应用 #### 一、EJB2消息驱动Bean ##### 1. **理解消息驱动Bean(MDB)** 消息驱动Bean是Java EE中用于处理异步消息的一种特殊类型的EJB。在EJB2中,MDB主要用于接收来自消息...
总的来说,"使用Eclipse+Jboss+MySql开发EJB"是一个综合性的任务,涉及了开发环境的搭建、企业级组件的设计与实现、数据库的连接和操作以及应用的部署与测试。掌握这一流程对于Java EE开发者来说是至关重要的,因为...
消息驱动Bean(Message Driven Bean,MDB)是EJB的一种特殊类型,它专注于处理消息队列(Queue)或主题(Topic)中的消息,实现异步处理。在本例中,我们将探讨如何使用EJB消息驱动Bean处理Queue和Topic。 1. **...
EJB是Java EE规范的一部分,它提供了一种标准的方式来实现业务逻辑,分为三种主要类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。会话Bean用于处理客户端请求...
EJB3的核心概念包括实体Bean(Entity Bean)、会话Bean(Session Bean)和消息驱动Bean(Message-Driven Bean)。 2. **JBOSS7.1.1 Final的特性** - **模块化架构**:JBOSS7采用全新的模块化设计,提高了启动速度...
在Java企业级应用开发中,EJB(Enterprise JavaBeans)和Hibernate是两个非常重要的组件。EJB主要用于构建可部署在Java EE服务器上的分布式组件,而Hibernate是一个强大的对象关系映射(ORM)框架,解决了Java与...
5. **消息驱动 Bean(Message-Driven Beans)**:EJB3.0中的消息驱动Bean可以轻松处理JMS(Java Message Service)消息,提供异步处理能力。 **一对多关系** 在EJB3.0和Java EE中,"一对多"关系指的是一个实体对应...
JBOSS AS(Application Server)是Red Hat公司开发的一款开源Java EE应用服务器,而EJB 3.0是Java平台上用于构建可扩展、安全和事务处理的服务器端应用程序的标准组件模型。 **JBOSS7** 是JBOSS应用服务器的一个...
### jBoss EJB 3.0 开发指南 #### 一、引言 随着 Java 技术的发展,企业级应用的复杂度不断提高,EJB(Enterprise ...通过这些步骤,开发者可以快速上手 EJB 3.0 的开发,并将其应用于实际的企业级应用开发中。
在本文中,我们将深入探讨如何使用Eclipse集成开发环境(IDE)与JBoss Application Server 5相结合,利用Enterprise JavaBeans(EJB)3.0规范进行应用程序开发。EJB3是Java EE(企业版)平台的一个重要组成部分,它...
通过本课程,学生可以掌握如何创建EJB组件,例如会话bean、实体bean和消息驱动bean,以及如何在JBOSS中配置和管理这些组件。此外,源码提供了实际操作的机会,有助于巩固理论知识,提升实际开发技能。 【标签】...
1. **EJB类型**:EJB有三种主要类型,分别是Session Beans(会话bean)、Message Driven Beans(消息驱动bean)和Entity Beans(实体bean)。Session Beans用于表示业务逻辑,Message Driven Beans用于处理JMS(Java...
在实验中,你可能还会学习到EJB的接口定义、实体Bean(Entity Bean,用于持久化数据)、消息驱动Bean(Message-Driven Bean,用于处理消息队列)以及EJB的生命周期管理。此外,理解EJB容器如何处理事务、安全性、...