`
JFires
  • 浏览: 42998 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

2.5使用JMS API创建JMS应用(二)

阅读更多

2.5.2 消息驱动beans

消息驱动beans(Message-driven beans)在EJB2.0规范的时候诞生。该组件产生的动机是让EJB能够与JMS简单集成,使得EJB异步消息消费和使用标准JMS APIs一样简单。通过使用MessageListener接口,EJB通过消息推送自动从JMS提供者那里接收消息。一个MDB例子如下。

Listing 2.11 A simple message-driven bean example

import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
public class MyMessageProcessor
    implements MessageDrivenBean, MessageListener {

    public void onMessage(Message message) {
        TextMessage textMessage = null;
        try {
            if (message instanceof TextMessage) {
                textMessage = (TextMessage) message;
                System.out.println("Received message: " + msg.getText());
                processMessage(textMessage);
            } else {
                System.out.println("Incorrect message type: " +
                    message.getClass().getName());
            }
        } catch (JMSException jmsEx) {
             jmsEx.printStackTrace();
        }
    }
    public void ejbRemove() throws EJBException {
        // This method is called by the EJB container
    }
    public void setMessageDrivenContext(MessageDrivenContext ctx)
         throws EJBException {
         // This method is called by the EJB container
    }
    private void processMessage(TextMessage textMessage) {
        // Do some important processing of the message here
    }
}

注意到例子2.11的MyMessageProcessor类实现了MessageDrivenBean和MessageListener接口。MessageDrivenBean接口需要setMessageDrivenContext()和ejbRemove的实现方法。这些方法会在创建和销毁MDB时被EJB容器调用。MessageListener接口只包含单独的一个方法onMessage()。onMessage()方法会在消息到达时被JMS提供者调用。

    MDB除了允许EJB容器管理所需的所有资源,包括Java EE资源(如JDBC,JMS,JCA连接),安全,事务甚至是JMS消息应答,更重要的一个好处是可以并发地处理消息。普通的JMS客户端需要自己管理资源和环境,并且它们通常是线性处理消息--一次一条消息(除非特别地为多线程设计)。而MDB能够一次处理多条消息,因为EJB容器可以通过EJB部署描述符创建很多MDBs实例。这样的配置是在Java EE容器规范定义的。如果你使用Java EE容器,可以查看文档看是如何通过部署描述符进行配置的。

    MDBs的一个缺点是它们要求完全Java EE容器支持。今天所有EJB容器中,只有那些完全支持Java EE的才能支持MDBs。MDBs在一个完全的Java EE容器中非常有用,但是也有一些替代品不要求完全的Java EE容器。使用Spring框架的JMS APIs使得开发消息驱动POJOs(message-driven POJOs)非常简单。这些Plain Old Java Objects(POJOs)可以作为消息驱动组件使用。这种开发风格在Java开发领域逐渐流行起来,因为它避免了使用完整Java EE容器的负载。通过Spring框架的开发将在第七章讨论。

不是所有的EJB容器都要求一个完全的Java EE容器----尝试使用OpenEJB

在写这本书的时候,几乎市场上所有的EJB容器都需要一个完全的Java EE容器来支持MDBs。只有Apache OpenEJB是例外。OpenEJB从EJB1.1,EJB2到EJB3都支持MDBs,它可以通过嵌入或者独立运行方式来支持MDBs。OpenEJB可以嵌入在Apache Geronimo,Apache Tomcat或者你自己的Java应用。

 

2.6总结

企业消息传送在商业上的影响是明显的。企业消息传送及相关的概念影响了很多而外的技术和观念。没有企业消息传送,开发者就不能在同步调用和解偶的应用间自由选择。SOA,CEP和其它高层次基于企业消息传送的观念也不会产生。更重要的是JMS规范也不会产生。

    JMS规范对于Java世界的影响巨大,它使得消息传送变成Java的一部分,并且可以让所有的Java开发者使用。这对于允许Java连接商业上重要的应用非常必须,因为它为消息传送到使用提供一个标准的行为。这章的例子都非常简单和短,它们的目的是是你了解JMS。本书接下来的部分有更丰富的例子讨论,并且可以从网上下载。

    现在我们对JMS及它提供什么有了一个基本的了解,下面将回顾这些例子。第三章提供的一个样例将会在全书使用。

1
0
分享到:
评论

相关推荐

    xcf2.5使用包

    "xcf2.5使用包"指的是Apache CXF的2.5版本,这是一个广泛使用的Java框架,用于创建、消费和管理Web服务。此包包含了CXF框架的所有组件和相关依赖,方便开发者在项目中集成和使用。 Apache CXF 2.5.11是该系列的一个...

    JMS规范教程pdf

    JMS规范定义了与平台无关的API,这使得开发者可以编写一次代码,然后在任何支持JMS的平台上运行。这意味着JMS客户端程序能够轻松地在不同的操作系统和硬件架构之间迁移,只需确保目标环境有相应的JMS提供者即可。 *...

    JMS规范PDF

    - **共同特性与可移植性:** JMS专注于定义一组普遍适用的企业消息概念和工具,努力减少Java程序员在使用不同企业消息产品时需要掌握的概念数量,并最大化消息应用的可移植性。 **1.2.4 JMS不包含什么** - **明确...

    jms规范说明

    JMS,即Java消息服务,是Java平台中的消息中间件规范,它允许应用程序创建、发送、接收和读取消息,从而在两台或多台计算机之间进行异步通信。JMS提供了点对点(Point-to-Point,P2P)和发布/订阅(Publish/...

    SPRING2.5_JAR

    Spring 2.5 是一个重要的Java应用程序框架,它在企业级开发中被广泛使用,特别是在构建基于Java的可重用、模块化和松散耦合的组件方面。这个"SPRING2.5_JAR"压缩包包含的是Spring框架2.5版本的核心库,允许开发者...

    Spring Framework 2.5

    Spring Framework 2.5 是一款功能强大的企业级 Java 开发框架,旨在简化应用程序的开发过程,提高开发效率,并提供高度灵活的设计模式支持。该版本进一步增强了 Spring 的核心特性,并新增了许多功能来满足日益增长...

    spring 2.5开发手册

    在《Spring 2.5 开发手册》中,会详细解释这些特性的使用方法、配置细节以及最佳实践,帮助开发者充分利用Spring框架,构建稳定、高效的应用系统。通过阅读这份手册,开发者可以深入理解Spring 2.5的工作原理,提升...

    JMS与Spring之一(用JmsTemplate同步收发消息)

    JMS(Java Message Service)是一种Java API,用于在两个应用程序之间异步地发送消息。Spring框架提供了对JMS的支持,允许开发者使用JMS template或message listener container来实现消息的发送和接收。本文主要讲述...

    JMS消息服务AcitveMQ的配置和测试小例子

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于创建应用程序之间异步通信的标准API。它允许应用程序通过发送和接收消息来解耦生产者和消费者,提高系统的可扩展性和可靠性。Apache ActiveMQ是JMS的...

    spring_2.5_core_lib.zip

    Bean工厂负责创建、配置和管理应用中的对象,而ApplicationContext则扩展了Bean工厂,增加了国际化、事件传播、资源加载等功能。 3. **spring-context.jar**: 提供了上下文环境,这是Spring框架的核心部分,它...

    Struts2.5,Hibernate4,Spring3的帮助文档

    这三个框架的集成使用可以创建一个高效、可维护的Java EE应用。Struts2负责控制流程,Spring处理依赖注入和事务管理,而Hibernate则作为数据层的接口,负责与数据库的交互。这种组合可以提供良好的分层架构,提高...

    EJB javaEE5 JMS1.1 JSP2.1规范中文版

    它引入了大量的新特性和改进,比如对JSF(JavaServer Faces)、JPA(Java Persistence API)、JMS(Java Message Service)和 annotations 的支持,极大地简化了企业级应用的开发。 5. **JMS1.1规范**是Java消息...

    J2EE+1.6++API j2eeapi

    9. **JSR(Java Specification Requests)**:J2EE 1.6还包含了多个JSR实现,如JSR 168(Portlet API)和JSR 286(Portlet 2.0 API),用于portlet开发,以及JSR 107(Cache API),为应用提供缓存功能。 **API文档...

    jms 规范教程

    JMS为消息的创建、发送、接收和读取提供了统一的接口,使得开发者能够在不同的消息中间件之间进行切换,而无需修改应用程序代码。 **1.2 什么是JMS中的消息(MESSAGING)?** 在JMS中,消息是指在两个或多个应用...

    javaee5-doc-api

    在Java EE 5中,Servlet API升级到了2.5版本,增加了许多新功能。例如,`@WebServlet`注解允许程序员通过在类上添加注解而不是XML配置来声明Servlet。此外,Servlet 2.5支持过滤器链的定义和监听器的增强,使得应用...

    spring2.5中文数据手册

    Spring框架是一个广泛使用的Java平台应用开发框架,它提供了一种简单的方式来构建复杂的应用程序。接下来,我们将从以下几个方面来深入探讨这个版本的重要知识点。 ### 一、Spring框架概述 Spring框架是一个开源...

    spring2.5.pdf

    二、Spring 2.5的核心技术与新特性 ### 1. Inversion of Control (IoC) 容器 IoC容器是Spring框架的核心组件之一,负责管理对象的生命周期和配置依赖关系。在2.5版本中,IoC容器进行了多项升级: - **新的Bean...

    JAVA EE 5 API

    这个API涵盖了多种技术规范,包括Servlet、JSP、EJB、JMS、JTA、JPA等,为开发人员提供了丰富的工具和框架来实现高效、可扩展和可维护的应用。 **1. Servlet**:Servlet是Java EE中的核心组件,它定义了服务器端...

Global site tag (gtag.js) - Google Analytics