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及它提供什么有了一个基本的了解,下面将回顾这些例子。第三章提供的一个样例将会在全书使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值