- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaEE第11次
实验名称 演示EJB的消息驱动bean示例 实验目的 开发消息驱动bean的相关概念
消息的传递模型
Queue类型消息开发步骤 实验目的
1.开发消息驱动bean的相关概念
2.消息的传递模型
3.Queue类型消息开发步骤
实验内容及结果(请将相应题目代码和结果截图写在相应题目下方)
开发消息驱动bean的相关概念
(1).java消息驱动bean属于Java消息服务(Java Message Service,简称JMS)。
JMS是用于访问企业消息系统的开发商中心的API。企业消息系统可以协助应用软件通过网络进行消息交互。
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 类。
Xml代码:
java 中发送消息的概括.得到一个JNDI初始化上下文(Context)InitialContext ctx = new InitialContext();
.根据上下文查找一个连接工厂ConnectionFactory,改连接工厂是由JMS提供的,不需我们自己创建,每个厂商都为它绑定了一个全局JNDI,我们通过它的全局JNDI便获取它;QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup(ConnectionFactory);
.从连接工厂得到一个连接QueueConnection。QueueConnection conn = factory.createQueueConnection();
.通过连接来建立一个会话(Session);QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);这句代码意思是:建立不需要事务的并且能自动确立消息已接收的会话。
.查找目标地址:Destination destination=(Destination)ctx.lookup(queue/ztfQueue);
.根据会话以及目标地址来建立消息生产者MessageProducer(QueueSender和TopicPublisher都扩展自MessageProducer接口):MessageProducer producer = session.createProducer(destination);TextMessage msg = session.createTextMessage(您好:胡晓亮,这是我的第一个消息驱动Bean);producer.send(msg);
3.建立一个java项目,把jboss的client目录下的jar包全部buildPath到编译路径中
4.写消息的发送端
5.写消息的接收端
采用MessageDrivenBean接收消息。当容器检测到bean守候的目标地址有消息到达时,容器调用onMess
文档评论(0)