消息服务是一种在分布式应用之间提供消息传递服务的软件,具有可靠、异步、宽松结 合、语言中立、平台中立的特点,而且通常是可配置的。它的实现原理是:对发送者和接收者之间传递的消息进行封装,并在分布式消息客户程序结合的位置加上一个软件处理层。消息服务为消息的客户程序提供了一个接口,这个接口隔离了底层的消息服务, 使得各种不同的客户程序能够通过一个友好的编程接口方便地通信。
Java消息服务(Java Message Service,JMS)是一个Java API,它定义了消息的客户程序如何以一种标准化的形式与底层的消息服务提供者交互。JMS提供了一种接口,底层消息服务提供者通过该接口向客户程序提供JMS消息服务。JMS提供了点对点消息模式(Point-to-Point)和发布-订阅消息模式(Publish-Subscribe)。点对点消息模式通过一
个消息队列实现,消息的生产者向队列写入消息,消息的消费者从队列提取消息。
发布-订阅消息模式通过一个话题(Topic)节点构成的层次结构实现,消息的生产者向这个层次结构发布消息,消息的消费者向这个结构订阅消息。
点对点消息模式具有如下特点:
每一个消息只有一个消费者。
消息的接收者和发送者之间不存在时间上的依赖关系。不论发送者发送消息时接收者是 否在运行,接收者都可以提取信息。
接收者对于成功处理的消息给出回执。
发布-订阅消息模式具有如下特点:
每一个消息可以有多个消费者。
向某个话题订阅的客户程序只能收到那些在它订阅之后发布的消息。为了接收到消息, 订阅者必须保持活动状态。因此,发布者和订阅者之间存在时间上的依赖关系。JMS API在一定程度上放宽了对这种依赖关系的要求,允许创建持久性订阅(Durable S ubscription)。有了持久性订阅,当订阅者不活动时发送的消息也能接收到。
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异步接收消息
分享到:
相关推荐
Java数据库驱动包是Java应用程序与各种数据库之间进行通信的关键组件。在Java中,JDBC(Java Database Connectivity)是一个标准API,允许程序员用Java语言来访问和处理存储在各种数据库中的数据。这个压缩包包含了...
这个压缩包包含了用于连接到SQL Server 2005的Java驱动以及JDTS驱动,它们都是实现JDBC规范的不同类型。 首先,让我们详细了解一下SQL Server 2005的Java驱动。Microsoft提供了JDBC驱动程序,也称为SQL Server JDBC...
神通数据库的Java驱动是实现这一接口的第三方驱动程序,使得Java程序能够与神通数据库进行通信,执行SQL语句,进行数据的读取、写入和更新等操作。 要使用神通数据库的Java连接驱动,开发者首先需要在项目中引入...
Java数据库驱动包是Java开发中不可或缺的部分,它允许Java应用程序与各种类型的数据库进行通信。在Java中,我们通过Java Database Connectivity (JDBC) API来实现这一功能。JDBC提供了一组标准接口,使得开发者能够...
java mysql驱动,版本为mysql-connector-java-5.1.40-bin
在Java应用程序中连接MySQL数据库时,我们通常需要一个特定的驱动程序,这就是"mysql-5.6-java驱动"的角色。这个驱动程序,也被称为MySQL Connector/J,是MySQL官方提供的用于Java应用的JDBC(Java Database ...
MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...
神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通数据库驱动包(亲测有效)神通数据库驱动jar,Java 连接神通...
这个驱动包可能包含以下常见的Java驱动: 1. JDBC驱动:如MySQL Connector/J, Oracle JDBC驱动,PostgreSQL JDBC驱动,Microsoft SQL Server的JDBC驱动等,用于与不同数据库系统的连接。 2. 文件系统驱动:例如,...
标题“sqlserver java驱动”指出我们将专注于SQL Server 2000的Java驱动。对于SQL Server,Java提供了以下三种驱动类型: 1. **JDBC-ODBC桥接驱动**: 这是最古老的驱动方式,它依赖于ODBC(Open Database ...
在Java中,我们通常使用SQLite JDBC驱动来与SQLite数据库进行交互,这就是"sqlite驱动 java数据库驱动"所指的内容。SQLite JDBC驱动允许Java应用程序通过标准的JDBC接口来连接和操作SQLite数据库。 `sqlitejdbc-v...
Java JDBC(Java Database Connectivity)驱动则是Java程序与各种数据库进行交互的标准接口,使得Java开发者能够方便地访问和操作数据库。在本压缩包中,我们可能找到了用于连接MySQL 8.0的Java JDBC驱动,这将帮助...
Java数据库驱动包(JDBC驱动)是Java编程语言与各种数据库之间通信的关键组件。JDBC (Java Database Connectivity) 是由Sun Microsystems公司开发并定义的一种标准API,允许Java应用程序连接到各种类型的数据库。在...
- Type 4:纯Java驱动,直接与数据库通信,无需中间层,如MySQL Connector/J。 3. 数据库驱动示例: - MySQL Connector/J:这是MySQL官方提供的Type 4驱动,用于连接MySQL数据库,完全用Java编写,性能高效。 - ...
- Type 1:纯Java驱动,只支持ODBC桥接,性能较低。 - Type 2:部分Java部分本地代码,依赖于数据库供应商提供的本地库。 - Type 3:完全基于网络的驱动,使用中间服务器进行通信。 - Type 4:纯Java的网络驱动...
Java与Microsoft SQL Server之间的通信是通过Java Database Connectivity (JDBC) 驱动程序实现的。JDBC驱动程序是Java编程语言中的一组接口和类,允许Java应用程序连接到SQL数据库,执行SQL命令并处理结果。在Java中...
- Type 1:纯Java驱动,也称为别名驱动,它依赖于数据库供应商提供的ODBC桥。 - Type 2:混合驱动,包含Java和本地库(如C),通过ODBC桥与数据库通信。 - Type 3:全Java网络协议驱动,完全基于Java实现,直接与...
Java驱动,通常指的是Java编程语言在特定场景下用于与硬件设备、数据库或其他应用程序进行交互的接口或库。在Java世界中,驱动程序扮演着至关重要的角色,它们是系统和特定资源之间的桥梁,允许Java应用程序执行各种...
opengauss java驱动包
Oracle 10G Java驱动包是Oracle数据库与Java应用程序交互的重要组成部分,主要包含两个关键的JAR文件:`classes12.jar` 和 `ojdbc14.jar`。这两个文件为Java开发者提供了连接Oracle 10G数据库的必要工具,使得在Java...