J2EE组件开发

一、概述

消息服务是一种在分布式应用之间提供消息传递服务的软件,具有可靠、异步、宽松结合、语言中立、平台中立的特点,而且通常是可配置的。它的实现原理是:对发送者和接收者之间传递的消息进行封装,并在分布式消息客户程序结合的位置加上一个软件处理层。消息服务为消息的客户程序提供了一个接口,这个接口隔离了底层的消息服务,使得各种不同的客户程序能够通过一个友好的编程接口方便地通信。

Java消息服务(Java Message Service,JMS)是一个Java API,它定义了消息的客户程序如何以一种标准化的形式与底层的消息服务提供者交互。JMS提供了一种接口,底层消息服务提供者通过该接口向客户程序提供JMS消息服务。JMS提供了点对点消息模式(Point-to-Point)和发布-订阅消息模式(Publish-Subscribe)。点对点消息模式通过一个消息队列实现,消息的生产者向队列写入消息,消息的消费者从队列提取消息。发布-订阅消息模式通过一个话题(Topic)节点构成的层次结构实现,消息的生产者向这个层次结构发布消息,消息的消费者向这个结构订阅消息。

点对点消息模式具有如下特点:

每一个消息只有一个消费者。

消息的接收者和发送者之间不存在时间上的依赖关系。不论发送者发送消息时接收者是否在运行,接收者都可以提取信息。接收者对于成功处理的消息给出回执。

发布-订阅消息模式具有如下特点:

每一个消息可以有多个消费者。

向某个话题订阅的客户程序只能收到那些在它订阅之后发布的消息。为了接收到消息,订阅者必须保持活动状态。因此,发布者和订阅者之间存在时间上的依赖关系。

JMS API在一定程度上放宽了对这种依赖关系的要求,允许创建持久性订阅(Durable Subscription)。有了持久性订阅,当订阅者不活动时发送的消息也能接收到。

EJB 2.0规范定义了一种新的EJB类型,即消息驱动的EJB(Message-Driven EJB,简称MDB),它能够以EJB的形式实现JMS消息的接收者。消息驱动的EJB实现一组新的接口,这组接口使得EJB能够异步地接收和处理JMS消息生产者发送到队列或话题的消息。EJB客户程序的构造方式与普通JMS消息生产者的构造方式完全一样,也就是说,JMS消息生产者不必知道消息的消费者是一个EJB。

相对于会话Bean和实体Bean而言,消息驱动的Bean最大的特点是客户程序不通过接口访问Bean。与会话Bean和实体Bean不同,消息驱动的Bean只有一个Bean类。从某些方面看,消息驱动的Bean类似于无状态会话Bean:消息驱动的Bean不为特定的客户保留数据或对话状态。

一个消息驱动Bean的所有的实例都是等价的,这使得容器能够把消息指派给任意一个消息驱动Bean的实例。容器能够建立消息驱动Bean的缓冲池,实现消息的并发处理。一个消息驱动的Bean能够处理来自多个客户程序的消息。

消息驱动Bean的实例变量可以在处理客户消息期间包含一些状态信息,例如JMS连接、打开的数据库连接,或者是对EJB对象的引用。当一个消息到达,容器调用消息驱动Bean的onMessage()方法处理消息。onMessage()方法通常把消息定型(cast)成为五种JMS消息类型之一,然后按照应用的业务逻辑的要求处理消息。

传递给消息驱动Bean的消息可能处于一个事务之内,这时,onMessage()方法内的所有操作都属于该事务的一部分。如果消息处理结果被回退,则系统将再次投递该消息。

哪些时候应该使用消息驱动的Bean呢?会话Bean和实体Bean能够发送JMS消息,能够同步接收消息,但不能异步接收。一些时候,为防止过多地占用服务器资源,在服务器端的组件中,我们想要避免阻塞,这时,我们可以用消息驱动的Bean异步接收消息。

时间: 2024-11-02 04:02:00

J2EE组件开发的相关文章

J2EE平台WEB组件开发中如何使用定制标签

j2ee|web|组件开发 摘要: J2EE PLATFORM WEB组件开发涉及SERVLET 和JSP技术,SERVLET和JSP各有其优缺点.JVAVABEAN和定制标签对JSP的表示能力提供了很好的扩展,大大提高了JSP的表示能力,同时它们的引入使WEB开发可以很好的进行分工,提高开发效率,降低开发成本,同时提高了JSP页面的可读性.重用性.可维护性.本文将介绍J2EE平台WEB组件开发中如何使用定制标签,主要介绍开发定制标签的意义,原理.步骤.在TOMCAT上的发布并给出一个典型的标签

怎样在J2EE组件中引用和查找Web服务

j2ee|web|web服务 本文将讨论怎么在J2EE组件中引用Web服务.并且通过JNDI来查找Web服务.在内容组织上,首先把一个EJB2.1无状态会话Bean发布成Web服务,然后开发基于JSP的Web服务客户端,最后着重介绍怎么在JSP的部署时引用Web服务,并且讨论怎么通过JNDI来查找和调用Web服务.阅读本文前您需要以下的知识和工具:J2EE1.4 SDK,并且会初步使用:掌握基本的JAX-RPC Web服务开发技能:了解JNDI的基本知识,能够使用它进行简单编程:一般的Java编

面向设计的半封装web组件开发(概要版)

一.传统web组件的妄想 目前很多Team和团队都有自己的一套web组件体系,模块化开发,封装良好,上手简单.然后希望该web组件可以应用到接手的各个项目中,节约日后的开发成本.甚至考虑开源. 这其实是很棒的,但是呢,希望一套web组件各个项目通用?在我看来,除非对项目没有追求,否则不太现实. 但是呢,希望一套web组件各个项目通用?在我看来,除非对项目没有追求,否则就是妄想. 为什么说传统web组件想一统天下不现实呢?因为就像秦始皇一统天下一样,要牺牲很多很多东西. 牺牲代码量 web组件要想

基于YUI的组件开发(1)【珍珠奶茶帮】

分享人:拔赤 导语:如今的前端开发越来越OO,也越来越注重重用,娴熟的用js写出OO的前端代码已然是一个前端工程师的基本素质之一.与此同时,网站的开发过程也越来越类似于堆积木.模块思想也逐渐深入的应用在大型网站的开发之中,指导网站的设计和架构,在今天[珍珠奶茶帮]的分享中,我们来对基于YUI的组件开发做深入探讨. 模块化的前端开发 在web技术迅猛发展的今天,大型网站的前端开发越来越依赖复杂的团队配合,而模块化思想则能有效的指导团队开发的效率提升和成本压缩.它使得我们在项目中将注意力放在颗粒化组

Flash CS3 组件开发教程

教程|组件开发 [教程说明]:应云开等朋友的要求,我今天把组件开发过程整理一下,写成这篇教程.通过此篇教程你可以大致了解Flash 组件开发整个过程,希望对那些想自己开发Flash 组件的朋友有所帮助.我这次主要开发Flash 代码组件,甚至其他Flash 组件,你可以自行研究或和我一起讨论. [前提条件]:1.安装了Flash CS3软件:2.安装了Adobe Extension Manager 1.8 扩展管理器,如果没有请先到这里下载: [开发教程]:1.首先准备一个18x18的png 图

flash组件开发要点

组件开发 开发组件的目的就是为了封装可以重复使用的应用程序块,减少毫无意义的重复编码工作,提高开发效率. 最近在研究flash8的v2组件整理了一些制作组件的基础知识 1.必须清楚的一些类 Object类是基类,所以其他的类都派生于他.这个类我们需要重点了解reisterClass的用法,这个方法可以将类和元件关联起来,通俗的讲就是将类的一些方法和属性赋给元件对象,这个方法和在库中设置类绑定的作用是一样的. 侦听广播机制和委托机制必须熟悉,这套机制是flash开发大型项目的杀手锏. 2.flas

在ASP中利用COM组件开发Web应用程序

web|程序|组件开发 如果你是一名Active Server Page (ASP) 开发者,相信你可能经常使用COM对象来创建ASP页面.甚至在你使用中都忽略了他就是COM对象.比如:ADO.只个调用率最高的组件已让你的页面扩展了无限的功能.然而ASP本身是解释型脚本,在功能上不足COM强大.作为拥有快速开发,易用性强,支持COM的VB自然的作为了ASP中开发COM的首要工具.下面的示范和描述中,通过Visual Basic 语言在告诉大家如何写COM及COM对象模型的使用,相信会让你有所收获

C#组件开发 Zt

组件开发 简介 微软即将发布的 Visual Studio .NET 将使程序开发人员获得一个集 成开发环境,它不但为开发传统的 C/C++ 应用程序,而且也为令人振奋 的 Microsoft .NET 组件提供了丰富的工具.这些以管理代码编写.在通 用语言运行时构建的组件向开发人员提供了一个全新的混合开发环境,即 象 Microsoft Visual Basic 一样容易,而同时又提供了强大的低级编程 能力,与 ATL 或 MFC 更加相关.随着以生产效率为中心的管理环境的到 来,它可与传统

VB.NET中的组件开发

组件开发 先看段组件的代码:(临时写的,写得比较乱) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' 登录验证组件 '' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Imports System.Security.CryptographyImports System.TextImports System.DataImpo