`
leon.s.kennedy
  • 浏览: 110508 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

开发消息驱动bean 1

    博客分类:
  • ejb3
 
阅读更多

Java消息服务(Java Message Service)
Java消息服务简称JMS 是用于访问企业消息系统的开发商中立的API,企业消息系统可以协助应用软件通过网络进行消息交互

开发消息驱动bean <wbr>1

应用程序A与应用程序B 并没有代码关联
通过JBOSS JMS服务器 解耦

 

JMS中的消息:
消息传递系统的中心就是消息。一条Message由三个部分组成:
头(header)、属性(property)和主体(body)

 

消息有下面几种类型,他们都是继承自Message接口
StreamMessage:一种主体中包含Java基元值流的消息。其填充和读

取均按顺序进行
MapMessage:一种主体中包含一组名-值的消息。没有定义条目顺序
TextMessage:一种主体中包含Java字符串的消息(例如,XML信息)最常用
ObjectMessage:一种主体中包含序列化Java对象的消息
BytesMessage:一种主体中包含连续字节流的消息

 

消息的传递模型:
JMS支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。这两种消息传递模型非常相似,但有以下区别:
PTP消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue表示

开发消息驱动bean <wbr>1

消息只传递给一个监听,谁先来,谁优先

 

Pub/sub消息传递模型允许一条消息传递给多个接收方。采用

javax.jms.Topic表示
开发消息驱动bean <wbr>1

这两种模型都通过扩展公用基类来实现。例如:javax.jms.Queue和

javax.jms.Topic都扩展自javax.jms.Destination

 

配置目标地址:
开始JMS编程前,需要先配置消息到达的目标地址(Destination),

因为只有目标地址存在了,才能发送消息到这个地址。由于每个应

用服务器关于目标地址的配置方式都有所不同,下面以jboss为例,

配置一个queue类型的目标地址

<?xml version="1.0" encoding="UTF-8"?>
<server>

  <!-- 目标地址的名称ejb3testQueue -->
  <mbean code="org.jboss.mq.server.jmx.Queue" 
         name="jboss.mq.destination:service=Queue,name=ejb3testQueue">

     <!-- 指定ejb3testQueue地址的JNDI名称 -->
     <attribute name="JNDIName">queue/ejb3testQueue</attribute>
     <depends optional-attribute-name="DestinationManager">

         jboss.mq:service=DestinationManager

     </depends>
  </mbean>
</server>


jboss使用一个XML文件配置队列地址,文件的取名格式应遵守*-service.xml
当jboss遇到*-service.xml文件时,会把它当成服务去发布

这里取名为:ejb3testQueue-service.xml 

<attribute name="JNDIName">属性指定了该目标地址的全局JNDI名称。如果不指定JNDIName属性,jboss会为它自动生成一个默认的全局JNDI,其名称由“queue”+“/”+目标地址名称组成

另外在任何队列或主体被部署之前,应用服务器必须先部署Destination Manager Mbean,所以通过<depends>节点声明这一依赖。
在目标地址发布之前,先发布依赖服务(目标地址的管理器服务)
当目标地址编写好之后,进行发布,其过程和发布数据源、EJB一样
复制到当前配置项\deploy目录下


部署进jboss之后,控制台将输出信息,该JNDI名称

为:queue/ejb3testQueue
它前面没有java: 说明是全局JNDI名称,可以被外部访问

 

之后进入jboss管理后台jmx-console,找到jboss.mq.destination

栏目,找到刚才发布的目标地址,点进去后,可看到J绑定的NDIName属性名称

EJB中的资源,都是通过JNDI名称进行绑定的

-------------------------------------------------------

在java类中发送消息:
1.得到一个JNDI初始化上下文(Context)
InitialContext ctx = new InitialContext();

2.根据上下文查找一个连接工厂QueueConnectionFactory。该连接工厂是由JMS提供的,不需要自己

创建,每个厂商都为它绑定了一个全局JNDI,通过它的全局JNDI便可获取它:
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup

("QueueConnectionFactory");

3.从连接工厂得到一个连接QueueConnection
conn = factory.createQueueConnection();

4.通过连接来建立一个会话(Session):
session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);;
是否使用事务,消息接受的确认模式(使用默认自动)

5.查找目标地址:
例子对应代码:Destination destination = (Destination)ctx.lookup("ejb3testQueue");
返回是一个Queue的对象,这里用它的父类去引用它

6.根据会话以及目标地址来建立消息生产者(发送者)MessageProducer
(QueueSender和TopicPublisher都扩展自MessageProducer接口)
例子对应代码:MessageProducer producer = session.createProducer(destination);
传入代表要发送到的地址作为参数
TextMessage msg = session.createTextMessage("您好,这是我第一个消息驱动Bean");
producer.send(msg);

当发送消息之后,需要关闭会话、关闭连接


新建一个MessageDrivenBean的java Project项目,添加进所有EJBjar包
在src下建立java类QueueSender(com.jboss.app包),用于发送Queue
勾选main()
在类路径下添加jndi.properties文件

开发消息驱动bean <wbr>1

运行,发送消息(控制台上无输出)


打开jboss管理后台jmx-console,找到jboss目录下
service=JNDIView连接,找到里面的list()方法,Invoke
在全局命名空间下,查找到Queue的连接工厂的JNDI,就叫QueueConnectionFactory

0
1
分享到:
评论

相关推荐

    消息驱动bean学习

    消息驱动Bean(Message Driven Bean,MDB)是Java EE(Enterprise Edition)平台中的一种特殊类型的Enterprise JavaBean(EJB),主要用于处理消息队列中的消息。MDBs是异步的,这意味着它们不会直接与客户端交互,...

    消息驱动bean EJB 3.0

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

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

    1. **EJB2.0消息驱动Bean(MDB)概念**: - MDB是无状态的组件,专门设计用于处理来自JMS队列或主题的消息。 - MDB通过监听JMS消息,自动启动,处理消息后结束,实现了异步处理。 2. **JBOSS 4.0.4.GA**: - 这...

    EJB消息驱动bean Demo

    在EJB中,消息驱动bean(Message-Driven Bean,MDB)是一种特殊类型的bean,它用于处理来自消息中间件(如JMS,Java Message Service)的消息。在这个“EJB消息驱动bean Demo”中,我们将深入探讨EJB MDB和JMS如何...

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

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

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

    本篇主要关注Jboss服务器下的EJB开发,特别是消息驱动Bean(Message Driven Bean, MDB)的应用。消息驱动Bean是EJB的一种类型,它专门用于处理异步消息,通常是通过Java Message Service (JMS) API来实现的。 首先...

    EJB2和EJB3 消息驱动bean

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

    消息驱动Bean的Wblogic配置

    1. **什么是消息驱动Bean(MDB)** - MDB是一种无状态的会话Bean,它通过JMS接口监听消息队列或主题,从而实现异步处理。 - MDB在接收到消息时,会自动调用其消息驱动的方法,无需客户端显式调用,提高了系统的可...

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

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

    EJB三种bean的开发模式

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

    Ejb开发实体bean

    2. **实体Bean**:实体Bean是EJB的三大类型之一(另外两种是会话Bean和消息驱动Bean)。实体Bean通常用于表示数据库中的实体,它们有持久化状态,并且可以通过其唯一的键(主键)进行识别。在购物车应用中,可能包含...

    EJB3.0开发Session Bean.rar

    注解驱动的开发** EJB 3.0引入了多种注解,如`@Stateless`, `@Stateful`, `@Singleton`, `@LocalBean`, `@Remote`等,使得开发者可以通过在类和方法上添加注解来声明Bean的行为和接口。 **5. 依赖注入** 依赖...

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

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

    EJB3.0开发Message Driven Bean.rar

    EJB 3.0是EJB规范的一个重要版本,它引入了大量简化开发的特性,其中Message Driven Bean(MDB)是一种专门用于处理消息的组件,它简化了企业级应用中的异步处理。 Message Driven Bean 是一种无状态的session bean...

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

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

    EJB3.0开发入门 Step by Step (图文讲解)

    本文将围绕EJB3.0的三大核心组件——实体Bean(Entity Bean)、会话Bean(Session Bean)和消息驱动Bean(Message Driven Bean)进行详细介绍。 ### 1. 实体Bean(Entity Bean) 实体Bean是EJB3.0中的持久化组件,...

    EJB3.0 PPT

    【EJB3.0 PPT】深入解析实体Bean与消息驱动Bean EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的核心组件之一,主要用于构建可复用、可扩展且具有高度分布式特性的服务。本篇主要关注EJB3.0中的两个关键组件...

    消息驱动一Stream介绍PPT学习教案.pptx

    消息驱动Bean是Java EE平台上的一个特殊类型的Enterprise JavaBean (EJB),专门设计用来处理消息队列中的消息。MDB作为一个后台服务,监听特定的消息源,如JMS (Java Message Service) 队列或主题,当接收到消息时...

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

    - **消息驱动Bean**:消息驱动Bean用于接收和处理JMS消息,通常与消息队列或主题交互,实现异步处理。 总的来说,Java EJB3通过减少XML配置、引入注解和简化API,降低了开发复杂性,提高了开发效率。在实际应用中...

Global site tag (gtag.js) - Google Analytics