- 浏览: 1198780 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
关键字: JMS
ConnectionFactory 是一个可以从JNDI检索的受管理对象,它建立了到提供者的连接。它包含 createConnection() 方法,该方法返回了一个 Connection 对象。
Connection 封装了一个连接到提供者的活动连接。它的一些方法包括:
createSession(boolean, int):返回一个 Session 对象。boolean 参数指出 Session 是否被处理, int 则指出确认模式(请参阅 确认)。
start():激活提供者发送消息。
stop():临时停止消息的发送,可以用 start() 重新开始发送。
close():关闭到提供者的连接,并释放以它的名义占用的所有资源。
Session 是用来发送和接收消息的单线程的上下文。它的一些方法包括:
createProducer(Destination):返回一个 MessageProducer 对象,向指定的 Destination 发送消息。
createConsumer(Destination):返回一个 MessageConsumer 对象来接收来自指定 Destination 的消息。
commit():提交当前事务的所有使用的或者产生的消息。
rollback():回滚当前事务所有使用的或者产生的消息。
create<MessageType>Message(...):一组返回 <MessageType>Message 的方法——例如,MapMessage、TextMessage 等。
Destination 封装消息的目的地。它是一个从 JNDI 检索的受管理对象。
MessageProducer 用于发送消息。它的一些方法包括:
send(Message):发送指示的 Message。
setDeliveryMode(int):设置后续消息的发送模式,有效值为 DeliveryMode.PERSISTENT 和 DeliveryMode.NON_PERSISTENT。
setPriority(int):设置后续发送消息的优先级,有效值为 0 到 9。
setTimeToLive(long):设置后续发送消息失效前的持续时间,以毫秒计。
MessageConsumer 被用来接收消息。它的一些方法包括:
receive():返回下一发到达的消息,该方法在消息可用之前会受到阻塞。
receive(long):接收在 long 毫秒内到达的下一个消息,如果在时间限制内没有消息到达,则该方法返回 null。
receiveNoWait:如果有一个消息立即可用,则接收下一个消息,如果没有消息可用,则该方法返回 null。
setMessageListener(MessageListener):设置 MessageListener,MessageListener 对象在消息到达时接收它们,也就是异步接收(请参阅 MessageListener )。
MessageListener 是有一个单一方法——onMessage(Message)——的接口,它提供了消息的异步接收和处理。
应该通过客户机类和该类使用 setMessageListener(MessageListener) 方法传递给 MessageConsumer 对象的实例来实现这个接口。在消息到达目的地时,用 onMessage(Message) 将它传递给对象。
例子:
Sender.java
import java.io.*;
import javax.jms.*;
import javax.naming.*;
public class Sender {
public static void main(String[] args) {
new Sender().send();
}
public void send() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
//Prompt for JNDI names
System.out.println("Enter ConnectionFactory name:");
String factoryName = reader.readLine();
System.out.println("Enter Destination name:");
String destinationName = reader.readLine();
//Look up administered objects
InitialContext initContext = new InitialContext();
ConnectionFactory factory =
(ConnectionFactory) initContext.lookup(factoryName);
Destination destination = (Destination) initContext.lookup(destinationName);
initContext.close();
//Create JMS objects
Connection connection = factory.createConnection();
Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = session.createProducer(queue);
//Send messages
String messageText = null;
while (true) {
System.out.println("Enter message to send or 'quit':");
messageText = reader.readLine();
if ("quit".equals(messageText))
break;
TextMessage message = session.createTextMessage(messageText);
sender.send(message);
}
//Exit
System.out.println("Exiting...");
reader.close();
connection.close();
System.out.println("Goodbye!");
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
Connection 封装了一个连接到提供者的活动连接。它的一些方法包括:
createSession(boolean, int):返回一个 Session 对象。boolean 参数指出 Session 是否被处理, int 则指出确认模式(请参阅 确认)。
start():激活提供者发送消息。
stop():临时停止消息的发送,可以用 start() 重新开始发送。
close():关闭到提供者的连接,并释放以它的名义占用的所有资源。
Session 是用来发送和接收消息的单线程的上下文。它的一些方法包括:
createProducer(Destination):返回一个 MessageProducer 对象,向指定的 Destination 发送消息。
createConsumer(Destination):返回一个 MessageConsumer 对象来接收来自指定 Destination 的消息。
commit():提交当前事务的所有使用的或者产生的消息。
rollback():回滚当前事务所有使用的或者产生的消息。
create<MessageType>Message(...):一组返回 <MessageType>Message 的方法——例如,MapMessage、TextMessage 等。
Destination 封装消息的目的地。它是一个从 JNDI 检索的受管理对象。
MessageProducer 用于发送消息。它的一些方法包括:
send(Message):发送指示的 Message。
setDeliveryMode(int):设置后续消息的发送模式,有效值为 DeliveryMode.PERSISTENT 和 DeliveryMode.NON_PERSISTENT。
setPriority(int):设置后续发送消息的优先级,有效值为 0 到 9。
setTimeToLive(long):设置后续发送消息失效前的持续时间,以毫秒计。
MessageConsumer 被用来接收消息。它的一些方法包括:
receive():返回下一发到达的消息,该方法在消息可用之前会受到阻塞。
receive(long):接收在 long 毫秒内到达的下一个消息,如果在时间限制内没有消息到达,则该方法返回 null。
receiveNoWait:如果有一个消息立即可用,则接收下一个消息,如果没有消息可用,则该方法返回 null。
setMessageListener(MessageListener):设置 MessageListener,MessageListener 对象在消息到达时接收它们,也就是异步接收(请参阅 MessageListener )。
MessageListener 是有一个单一方法——onMessage(Message)——的接口,它提供了消息的异步接收和处理。
应该通过客户机类和该类使用 setMessageListener(MessageListener) 方法传递给 MessageConsumer 对象的实例来实现这个接口。在消息到达目的地时,用 onMessage(Message) 将它传递给对象。
例子:
Sender.java
import java.io.*;
import javax.jms.*;
import javax.naming.*;
public class Sender {
public static void main(String[] args) {
new Sender().send();
}
public void send() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
//Prompt for JNDI names
System.out.println("Enter ConnectionFactory name:");
String factoryName = reader.readLine();
System.out.println("Enter Destination name:");
String destinationName = reader.readLine();
//Look up administered objects
InitialContext initContext = new InitialContext();
ConnectionFactory factory =
(ConnectionFactory) initContext.lookup(factoryName);
Destination destination = (Destination) initContext.lookup(destinationName);
initContext.close();
//Create JMS objects
Connection connection = factory.createConnection();
Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = session.createProducer(queue);
//Send messages
String messageText = null;
while (true) {
System.out.println("Enter message to send or 'quit':");
messageText = reader.readLine();
if ("quit".equals(messageText))
break;
TextMessage message = session.createTextMessage(messageText);
sender.send(message);
}
//Exit
System.out.println("Exiting...");
reader.close();
connection.close();
System.out.println("Goodbye!");
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
- Sender 类有两个方法:main(String[]) 和 send()。main(String[]) 方法只是举例说明了 Sender 并调用了它的 send() 方法。
- send() 方法的第一部分提示了将用来发送消息的受管理对象的 JNDI 名。
- send() 方法的下一部分用前面输入的名字在 JNDI 中查询受管理的对象。
- 通过举例说明 InitialContext 对象访问了 JNDI,通过调用 lookup(String) 方法并传递要获取的对象的名字来检索受管理的对象。注意, lookup(String) 方法返回 Object,所以必须对返回的对象进行类型强制转换(typecast)。
- Receiver.java
- <PRE class=java name="code">import java.io.*;
- import javax.jms.*;
- import javax.naming.*;
- public class Receiver implements MessageListener {
- private boolean stop = false;
- public static void main(String[] args) {
- new Receiver().receive();
- }
- public void receive() {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- try {
- //Prompt for JNDI names
- System.out.println("Enter ConnectionFactory name:");
- String factoryName = reader.readLine();
- System.out.println("Enter Destination name:");
- String destinationName = reader.readLine();
- reader.close();
- //Look up administered objects
- InitialContext initContext = new InitialContext();
- ConnectionFactory factory =
- (ConnectionFactory) initContext.lookup(factoryName);
- Destination destination = (Destination) initContext.lookup(destinationName);
- initContext.close();
- //Create JMS objects
- Connection connection = factory.createConnection();
- Session session =
- connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- MessageConsumer receiver = session.createConsumer(queue);
- receiver.setMessageListener(this);
- connection.start();
- //Wait for stop
- while (!stop) {
- Thread.sleep(1000);
- }
- //Exit
- System.out.println("Exiting...");
- connection.close();
- System.out.println("Goodbye!");
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(1);
- }
- }
- public void onMessage(Message message) {
- try {
- String msgText = ((TextMessage) message).getText();
- System.out.println(msgText);
- if ("stop".equals(msgText))
- stop = true;
- } catch (JMSException e) {
- e.printStackTrace();
- stop = true;
- }
- }
- }</PRE>
- <BR>
- <BR>boolean stop 实例变量用来指出程序应该退出。
- <BR>
- <BR>Receiver 实现了 MessageListener 接口,为了异步接收消息
- <BR>
发表评论
-
jms&mdp
2010-06-20 17:10 0jms&mdp -
spring rmi 小例子
2009-12-02 17:19 21281 下载 2 导入eclipse (java projec ... -
用ajax发送jms消息,并监听指定队列,并从中取出消息的小例子
2009-11-18 13:41 3389用ajax发送jms消息,并监听指定队列,并从中取出消息的小例 ... -
activemq的小例子
2009-11-18 11:50 1630两种JMS的实现方法: Topic==>消息主题 是发布 ... -
消息队列技术的介绍和原理(MQ)
2009-04-05 01:47 17035消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在 ... -
利用JMS Topic发布/订阅消息
2009-03-01 16:20 69772003年3月11日那一期(使用JMS Queue) 解释了如 ... -
基于JMS的数据汇集系统的研究与实现
2009-03-01 12:46 1517摘要 在深入研究JMS异步 ... -
JMS概念和基于weblogic下的JMS配置和客户端调用收藏
2009-03-01 12:01 35161. JMS基本概念 JMS(Java Message Ser ... -
在Spring中配置JMS
2009-03-01 08:16 2138郁闷了三天,今天终于把JMS弄出来了,就是发送消息,然后消息 ... -
ActiveMQ 实践之路(四) ActiveMQ 4.x +JBoss 4.x MDP实战篇
2009-03-01 07:53 1904关键字: ActiveMQ Activ ... -
ActiveMQ 实践之路(三) ActiveMQ 4.x +JBoss 4.x 整合篇
2009-03-01 07:51 1523关键字: ActiveMQ ... -
ActiveMQ 实践之路(二) 使用Queue或者Topic发送/接受消息
2009-03-01 07:49 2719本篇主要讲解在未使用 ... -
ActiveMQ 实践之路(一) 启动你的ActiveMQ
2009-03-01 07:48 1685ActiveMQ 实践之路(一) 启动你的ActiveMQ ... -
activeMQ 的 Queue 的生产和消费
2009-02-28 06:03 2219概念:两种JMS的实现方法: Topic==>消息主题 ... -
面向消息的中间件和ActiveMQ的介绍
2009-02-28 01:26 2617面向消息的中间件和ActiveMQ的介绍 关键字: MOM J ...
相关推荐
#### JMS 公共接口 - **JMSConnection**:创建连接。 - **JMSSession**:生产和消费消息的上下文。 - **MessageProducer**:创建并发送消息。 - **MessageConsumer**:接收消息。 - **Message**:消息实体。 - **...
#### 四、JMS公共工具 - **受管理的对象:** JMS定义了一些受管理的对象,如目的地(Destination)和连接工厂(ConnectionFactory)。 - **Connection:** Connection是与消息代理之间的连接,提供了与消息代理...
2. **定义接口**:定义一个公共接口,比如`CheckingAccountService`,其中包含需要远程调用的方法。这个接口将在客户端和服务端都需引用。 3. **实现接口**:在服务端,我们需要实现这个接口,例如`...
JMS规范还定义了公共工具,比如连接工厂(ConnectionFactory)、目的地(Destination)和连接(Connection)。连接工厂用于创建JMS连接,目的地代表消息的发送和接收位置,连接则提供客户端与消息服务之间的通信通道...
JMS 模板类提供了执行公共操作的 helper 方法,在需要更复杂应用的情况下,类把处理任务的核心委托给用户实现的回调接口。 Spring JMS 还提供了转换 JMSException 的功能,转换代码把检测到的 JMSException 层次...
**JMS公共工具**提供了构建JMS应用所需的基础设施。 - **受管理的对象**:如`Destination`、`ConnectionFactory`等,用于创建和管理JMS资源。 - **Connection**:表示与消息中间件的连接,是JMS应用的核心对象。 - ...
- **分发实现**: 您可以向第三方分发规范的实现以供测试和评估使用,条件是此类实现不得修改、子集、超集或其他方式扩展许可方命名空间,或包含该命名空间内的公共或受保护包、类、Java接口、字段或方法,除非这些...
Java消息服务(JMS)是Java平台上的一个标准API,它定义了一套通用接口,用于与多种消息服务器进行交互。JMS提供了一种统一的访问方式,类似于JDBC和JNDI,使得开发者可以使用相同的API来访问IBM的MQSeries和JBossMQ...
JMS是Java平台中用于在分布式环境中传递消息的标准接口,常用于企业级应用中的异步通信。 首先,我们要理解JMS的基本概念。JMS提供两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,...
JMS是一种通用的消息传递系统,提供了发送和接收消息的通用接口,让不同的消息服务提供商能够以相同的方式进行操作。 JMS的核心组件包括消息生产者(Message Producer)、消息消费者(Message Consumer)和消息队列...
这个资源适配器允许应用程序在Wildfly(一种流行的Java应用服务器)上与WebSphere MQ消息中间件进行交互,实现JMS接口的特性,如发布/订阅、队列、事务等。 描述中提到的“wildfly standalone deployments”意味着...
例如,在一个典型的SOA环境中,一个服务可能通过WSDL发布其公共接口,这个接口将描述该服务能够提供的功能、接受的数据格式以及返回的结果类型等信息。同时,服务的内部实现可以是任何技术栈下的代码实现,甚至可以...
10. **文档与接口**:良好的文档是项目成功的关键,包括需求文档、设计文档、API接口文档等,有助于团队理解和维护系统。 综上所述,这个基于JavaEE的公共自行车租赁管理系统涵盖了Web开发的多个层面,从前端用户...
Java消息服务(Java Message Service,JMS)是一组Java应用程序接口(Java API),它提供...由Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。
JMS提供了一组公共的接口和行为,使得开发者可以在不同消息代理之间切换而不必重写代码。 3. 消息中间件:介绍了消息中间件的概念,它是支持系统间异步通信的一类软件,使得分布式系统能够通过消息传递进行通信和...
客户端通过Bean的公共接口进行操作。实现类(Bean类)在运行时实例化,成为分布式对象。Bean分为三种类型: - SessionBean:处理客户端请求,通常用于短期、状态化的交互。 - EntityBean:代表持久性的商业实体,与...
例如,通过使用基于Web服务的公共接口,开发人员可以更容易地将后端系统集成到J2EE环境中,支持更高级别的自动化,并促进后端系统的互相连接。 #### 参考资料 为了更深入地理解本文涉及的概念和技术,以下是一些...
EJB有三种主要类型:会话bean(Session Beans)处理业务逻辑,实体bean(Entity Beans)表示持久化数据,消息驱动bean(Message-Driven Beans)用于接收和处理JMS消息。学习EJB需要理解容器管理的生命周期、ejb-jar....