- 浏览: 809333 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
概念:
1.java消息驱动bean属于Java消息服务(Java Message Service,简称JMS)。
2.JMS是用于访问企业消息系统的开发商中心的API。企业消息系统可以协助应用软件通过网络进行消息交互。
3.JMS的编程过程简单概括为:应用程序A-->(消息)-->Jboss JMS-->(消息)-->应用程序B。应用程序A和应用程序B没有直接的代码关联,两者实现了解耦。消息传递系统的中心就是消息。
消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件,它和无状态Session Bean一样也使用了实例池技术,容器可以使用一定数量的bean实例并发处理成百上千个JMS消息。正因为MDB具有处理大量并发消息的能力,所以非常适合应用在一些消息网关产品。如果一个业务执行的时间很长,而执行结果无需实时向用户反馈时,也很适合使用MDB。如订单成功后给用户发送一封电子邮件或发送一条短信等。
消息有下面几种类型,他们都是派生自Message接口。
StreamMessage:一种主体中包含Java基本值流的消息。其填充和读取均按顺序进行。
MapMessage:一种主体中包含一组名-值对的消息。(没有定义条目顺序)
TextMessage:一种主体中包含Java字符串的消息(例如:XML消息)
ObjectMessage:一种主体中包含序列化Java对象的消息。
BytesMessage:一种主体中包含连续字节流的消息。
消息的传递模型:
JMS支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。
二者有以下区别:
1.PTP 消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue表示。
2.Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。
注意:每种模型都通过扩展公用基类来实现。例如,javax.jms.Queue 和javax.jms.Topic都扩展自javax.jms.Destination 类。
Queue类型消息开发步骤:
1.首先配置一个Queue类型的目标地址,放在JBOSS目录下的D:\jboss-4.2.3.GA\server\default\deploy,
名字必须叫 *-server.xml
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=itcastQueue"> <attribute name="JNDIName">queue/itcastQueue</attribute> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> </mbean> </server>
在控制台 http://localhost:7070/jmx-console/ 找到 jboss.mq.destination ,以看到我们设置的queue类型的目标地址
2.java 中发送消息的概括
1.得到一个JNDI初始化上下文(Context)
InitialContext ctx = new InitialContext();
2.根据上下文查找一个连接工厂ConnectionFactory,改连接工厂是由JMS提供的,不需我们自己创建,每个厂商都为它绑定了一个全局JNDI,我们通过它的全局JNDI便获取它;
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
3.从连接工厂得到一个连接QueueConnection。
QueueConnection conn = factory.createQueueConnection();
4.通过连接来建立一个会话(Session);
QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
这句代码意思是:建立不需要事务的并且能自动确立消息已接收的会话。
5.查找目标地址:
Destination destination=(Destination)ctx.lookup("queue/ztfQueue");
6.根据会话以及目标地址来建立消息生产者MessageProducer(QueueSender和TopicPublisher都扩展自MessageProducer接口):
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("您好:胡晓亮,这是我的第一个消息驱动Bean");
producer.send(msg);
3.建立一个java项目,把jboss的client目录下的jar包全部buildPath到编译路径中
4.写消息的发送端
package cn.com.xinli.jms.app; import javax.jms.Destination; import javax.jms.MessageProducer; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSession; import javax.jms.TextMessage; import javax.naming.InitialContext; public class QueueSender { /** * 消息发送端 */ public static void main(String[] args) { try { /*需要从jndi.properties中读取上下文信息*/ InitialContext ctx = new InitialContext(); QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("QueueConnectionFactory"); QueueConnection conn = factory.createQueueConnection(); QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE); Destination destination=(Destination)ctx.lookup("queue/itcastQueue"); MessageProducer producer = session.createProducer(destination); TextMessage msg = session.createTextMessage("您2好:胡晓亮,这是我的第一个消息驱动Bean"); producer.send(msg); session.close(); conn.close(); System.out.println("消息发送成功"); } catch(Exception e) { System.out.println("消息发送失败"); e.printStackTrace(); } } }
jndi.properties
java.naming.provider.url = localhost:1099 java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory
5.写消息的接收端
采用MessageDrivenBean接收消息。
当容器检测到bean守候的目标地址有消息到达时,容器调用onMessage()方法,将消息作为参数传入MDB。MDB在onMessage()中决定如何处理改消息。你可以使用注解指定MDB监听哪一个目标地址(Destination)。当MDB部署时,容器将读取其中的配置信息。
一个MDB通常要实现MessageListener接口,在接口定义了onMessage()方法。Bean通过它来处理收到的JMS消息。
package cn.com.xinli.jms.app; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import javax.ejb.ActivationConfigProperty; @MessageDriven(activationConfig= { @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="destination",propertyValue="queue/itcastQueue"), @ActivationConfigProperty(propertyName="acknowledgeMode",propertyValue="Auto-acknowledge") }) public class MessageDriverBean implements MessageListener { public void onMessage(Message msg) { TextMessage message = (TextMessage)msg; try { System.out.println("接收到消息:"+message.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
6.打包部署:讲项目打成一个jar包,貌似netbC.jar,放在JBOSS的deploy目录下,启动jboss
7.运行QueueSender.java 发送消息 8.Jboss中看到
10:21:33,984 INFO [STDOUT] 接收到消息:您好:胡晓亮,这是我的第一个消息驱动Bean
- messagedriverBean.rar (5.2 KB)
- 下载次数: 53
发表评论
-
本地客户端调用 websphere6.1 ejb资源 解决方案
2011-01-21 12:25 1806开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3024用本地引用提高EJB访问效率 EJB 1 ... -
ejb3.0 跨平台,跨JVM调用出现的问题及解决方案
2009-11-09 21:58 2345首先 ... -
ejb3 定时器开发
2009-10-28 08:35 3766定时服务用作在一段特定的时间后执行某段程序 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2334消息驱动bean主要使用在异步的业务 ... -
ejb3 第12讲 --开发EJB容器模型的WEB服务
2009-08-05 08:04 3901JAX-WS JAX-WS规范是一组XML web ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1512目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1117这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3275情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1422用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2844理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1451<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1280这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1692ejb中的3种bean: 什么是会话bea ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 16061.下载地址:jboss4.2.3http://www. ... -
ejb2.0 HelloWord
2008-09-27 07:38 7987中国电信网上营业厅项目是使用ejb2.0开发的,在项目中 ...
相关推荐
第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置......36 6.2.1 MySql数据源的配置...........37 ...
第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置......36 6.2.1 MySql数据源的配置...........37 ...
EJB3.0是EJB规范的一个重大版本升级,引入了许多简化开发过程的新特性。 **1.2 EJB的运行环境** EJB组件需要部署在一个容器中运行,这个容器通常是应用服务器的一部分,例如JBoss、WebLogic或GlassFish等。容器...
### 第十一章至第十三章:打包、整合与野兽般的EJB驯服 这几章将讨论EJB应用的打包和部署,以及如何在不同应用层之间有效地整合EJB。此外,还将涉及如何处理和优化性能问题,确保EJB在大规模部署时的表现。 ### 第...
根据提供的文件信息,我们可以推断出这是一本关于EJB 3.0的书籍,书名为《Manning EJB3.0 in action》。虽然标题和描述中的故事似乎与EJB 3.0无关,但从部分内容来看,这本书显然是专注于EJB 3.0的技术细节及其在...
#### 第4章:消息传递和开发消息驱动Bean - **章节内容**:讲解如何利用消息传递机制和消息驱动Bean来实现异步处理。 - **核心知识点**: - 消息驱动Bean的工作原理。 - Java消息服务(JMS)的基础知识。 - 如何...
#### 第十一章至第十四章:打包部署与迁移指南 - **打包部署**:指导读者如何将EJB应用程序打包并部署到服务器上。 - **迁移策略**:提供了从早期版本EJB迁移到EJB 3.0的具体步骤和建议。 #### 第十五章:EJB作为...
第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) ...............................................................................................33 第六章 实体 BEAN(ENTITY BEAN) .................................
这一章深入探讨了EJB中消息驱动Bean的使用场景和编程模型。读者将学到如何处理异步消息,以及如何集成JMS消息系统。 5. **第5章:学习高级EJB概念** 本章涉及EJB的一些高级主题,如拦截器、定时服务等。这些特性...
《Enterprise Java Beans 3.0 第五版》是一本关于EJB(Enterprise JavaBeans)技术的权威指南,作者Bill Burke和Richard Monson-Haefel通过这本书向读者深入介绍了EJB 3.0标准的内容和应用。EJB作为Java EE(Java ...
这个教程可能包含了EJB3.0的核心概念、实体Bean、会话Bean、消息驱动Bean的创建和部署,以及如何在实际场景中应用它们。 2. "ejb3App.rar":这是一个EJB3.0应用的源代码压缩包,通常包含了项目结构、Java源文件、...
4. **消息驱动Bean(Message-Driven Beans, MDB)**:MDB用于处理JMS(Java Message Service)消息,是实现异步处理的一种方式。在EJB3中,只需使用@MessageDriven注解即可创建一个MDB。 5. **依赖注入(Dependency...
1. EJB概述:理解EJB的角色和类型,包括会话bean、实体bean和消息驱动bean。 2. EJB 3.0新特性:讲解EJB 3.0简化开发的特性,如注解驱动和无容器部署。 3. EJB容器管理:学习如何利用容器进行事务管理、安全性和资源...