- 浏览: 200787 次
- 性别:
- 来自: 上海
文章分类
最新评论
MDB其实就是JMS消息监听器,它实现了javax.jms.MessageListener接口。
P2P的消息模型(Queue):每次只有一个MDB bean被调用。
Server:
client:
Pub/Sub模型(Topic):所有destination名字相同的MDB bean都被调用。
Server:
Client:
P2P的消息模型(Queue):每次只有一个MDB bean被调用。
Server:
package com.kevin.ejb; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; // 这个annotation是定义MDB @MessageDriven( // 注册一个Queue类型的destination activationConfig = { @ActivationConfigProperty(propertyName = "destinationType" ,propertyValue = "javax.jms.Queue"), // destination名字 @ActivationConfigProperty(propertyName = "destination" ,propertyValue = "queue/myqueue") } ) public class MyQueueMDBBean implements MessageListener { public void onMessage(Message message) { TextMessage msg = (TextMessage)message; try { System.out.println("MyQueueMDBBean invoked. the message is: " + msg.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
client:
package com.kevin.ejb; import javax.jms.JMSException; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.TextMessage; import javax.naming.InitialContext; import javax.naming.NamingException; public class MyQueueMDBBeanClient { public static void main(String[] args) throws NamingException, JMSException { InitialContext context = new InitialContext(); // 获得QueueConnectionFactory对象 QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup("ConnectionFactory"); // 获得QueueConnection对象 QueueConnection connection = factory.createQueueConnection(); // 获得QueueSession对象 QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); // 获得destination对象 Queue queue = (Queue)context.lookup("queue/myqueue"); // 创建文本消息 TextMessage msg = session.createTextMessage("Hello, Kevin."); // 创建一个发送者 QueueSender sender = session.createSender(queue); // 发送消息 sender.send(msg); session.close(); connection.close(); System.out.println("message has been sended successfully!"); } }
Pub/Sub模型(Topic):所有destination名字相同的MDB bean都被调用。
Server:
package com.kevin.ejb; 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 = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/mytopic") } ) public class MyTopicMDBBean implements MessageListener { public void onMessage(Message message) { TextMessage msg = (TextMessage)message; try { System.out.println("MyTopicMDBBean invoked. the message is: " + msg.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
Client:
package com.kevin.ejb; import javax.jms.JMSException; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicPublisher; import javax.jms.TopicSession; import javax.naming.InitialContext; import javax.naming.NamingException; public class MyTopicMDBBeanClient { public static void main(String[] args) throws NamingException, JMSException { InitialContext context = new InitialContext(); // 创建TopicConnectionFactory对象 TopicConnectionFactory factory = (TopicConnectionFactory)context.lookup("ConnectionFactory"); // 创建TopicConnection对象 TopicConnection connection = factory.createTopicConnection(); // 创建TopicSession对象 TopicSession session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE); // 获取destination对象 Topic topic = (Topic)context.lookup("topic/mytopic"); // 创建文本消息对象 TextMessage msg = session.createTextMessage("Hello, Cissy."); // 创建TopicPublisher对象 TopicPublisher publisher = session.createPublisher(topic); // 发布消息 publisher.publish(msg); session.close(); connection.close(); System.out.println("message has been published successfully!"); } }
发表评论
-
Mybatis高级功能
2014-09-10 16:25 685应用场景: 应用所取的结果集中需要嵌入别的SQL的结果集。 ... -
在线仓储管理系统
2014-06-30 15:30 920http://work.haoysoft.com/OrderK ... -
导出excel文件
2014-06-30 13:49 1112@RequestMapping(value = " ... -
mmseg4j 1.9.1 + Solr 4.7.0 bug
2014-06-27 16:36 685http://www.ylzx8.cn/qiyeruanjia ... -
solr研究
2014-06-24 17:37 0http://blog.163.com/sir_876/blo ... -
java内存配置详解
2014-06-24 16:45 721Java内存溢出详解 一 ... -
String面试题
2014-01-26 17:15 653字符串对象是一种特殊的对象.String类是一个不可变的类.. ... -
JPA entity继承策略
2013-04-30 15:04 6286JPA支持3种类型的继承形式: 1.Single Table ... -
EJB之JPA模块(一)
2013-04-29 15:44 1473EJB中的JPA是对对象持久化操作的,jboss中默认的实现是 ... -
EJB实现多个接口
2013-04-25 11:07 1423local和remote可以定义在bean上,也可以定义在接口 ... -
Local和Remote方式访问EJB
2013-04-25 10:35 1272客户端访问EJB的方式有两种:Local,Remote。 L ... -
Stateful & Stateless EJB
2013-04-24 16:06 1200无状态session package com.kevin.ej ... -
Linux下搭建vsftp Server
2013-04-21 12:02 998http://www.cnblogs.com/fangbo/a ... -
Java动态代理
2013-03-22 14:59 1069Spring AOP是通过动态代理实现的,而动态代理有两种实现 ... -
Bean Validator JSR303
2013-02-21 17:14 917小demo. -
Java序列化
2013-01-03 11:23 890Java 串行化技术可以使 ... -
java正则表达式
2012-07-13 10:05 479http://www.blogjava.net/byterat ... -
String, StringBuffer和StringBuilder的区别
2012-05-24 14:55 1355String: 1. String是对象,但是不是原始类型。 ... -
MySql中文乱码问题
2012-01-18 10:29 1153建数据库、表,如下: create database admi ... -
blog
2011-12-01 17:48 986http://blog.csdn.net/einarzhang ...
相关推荐
【标题】"Idea搭建EJB架构Demo项目源代码"涉及的是使用IntelliJ IDEA(简称Idea)这个强大的Java集成开发环境来构建一个基于EJB(Enterprise JavaBeans)架构的示例项目。EJB是Java EE(企业版)平台的核心部分,...
在这个“EJB消息驱动bean Demo”中,我们将深入探讨EJB MDB和JMS如何协同工作以实现异步通信。 首先,JMS是Java平台上的标准API,它定义了生产、发送、接收和消费消息的接口。JMS提供两种消息模型:点对点(Point-...
**EJB(Enterprise JavaBeans)WebService Demo** EJB(Enterprise JavaBeans)是Java平台上的一个核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。它为开发人员提供了一种在Java环境中实现服务器...
这篇博客"使用EJB+Annotation实现AOP的DEMO"主要介绍了如何在EJB中利用注解(Annotation)来实现AOP的功能。在Java EE中,EJB 3.0及后续版本引入了大量的注解,使得开发者可以免去编写XML配置文件,直接在代码中声明...
其中Message-Driven Bean (MDB) 是一种特殊类型的EJB,主要用于接收来自Java消息服务(JMS)的消息。本文将详细介绍如何使用EJB3.0在JBoss IDE中创建和部署MDB。 #### 二、准备工作 1. **安装工具和软件**: - **...
EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要负责处理业务逻辑,为应用程序提供可重用和可扩展的服务。...通过实际操作EjbDemo项目,你可以将理论知识与实践相结合,进一步巩固对EJB3的理解。
在本范例中,"WebDemo"可能是一个Web应用程序,它通过Servlet或JSP与EJB通信,展示如何在Web层与业务层之间进行交互。通常,Web层负责处理HTTP请求,展示视图,而EJB则负责处理业务逻辑和服务。 **学习EJB的重要性...
- MDB(Message-Driven Bean)的persistent和non-persistent区别在于:persistent保证消息的可靠传输,即使EJB容器出现问题,消息仍会被保留;non-persistent消息则在传输失败后不会被保留。 8. **J2EE及MVC**: ...
10. **MDB 的持久化与非持久化**:持久化(persistent)的 MDB 确保消息传递的可靠性,即使 EJB 容器故障,消息也会在 MDB 可用时重新发送。而非持久化(non-persistent)的消息在 EJB 容器不可用时会被丢弃。 11. ...
- persistent MDB保证消息传递的可靠性,即使EJB容器出现问题,JMS服务器仍会保留消息,待MDB恢复时发送。 - non-persistent MDB不保证消息持久化,消息在处理失败时可能丢失。 本教程将通过实例详细讲解上述知识...
`Persistent`模式下的MDB可以确保即使EJB容器出现故障,JMS服务器仍会在MDB恢复时重新发送消息,从而保证消息不会丢失。相比之下,`Non-persistent`模式不提供这种保证,若EJB容器故障,消息将被丢弃。 #### 11. ...
根据提供的文件内容,我们可以从中提炼出与Java相关的多个知识点,具体包括WebLogic服务器配置、SSL安全设置、EJB(企业JavaBean)应用、CORBA架构理解、J2EE设计模式运用、消息驱动Bean(MDB)持久化选项、Servlet...
1. **默认配置**:缺省安装中,WebLogic使用`DemoIdentity.jks`和`DemoTrust.jks` KeyStore来实现SSL功能。 2. **启用SSL**:在管理控制台中配置服务器使用SSL,并设置相应的端口。 3. **产品模式下的配置**:在...
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...