下面具体来介绍服务器搭建,在http://openjms.sourceforge.net/downloads.html下载openJms,解压后在系统环境变量中加入OPENJMS_HOME=安装路径,在 \openjms-0.7.6.1\bin 里,有openJms的运行脚本,执行 startup 启动,弹出一个新的窗口,服务就运行在新窗口内,shutdown 为停止命令;下面写段JMS的测试代码:
import java.util.*;
import javax.jms.*;
import javax.naming.*;
public class QueueSend {
public static void main(String[] args) {
try {
//取得JNDI上下文和连接
Hashtable properties = new Hashtable();
properties.put(
Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");
//这个地方是核心部分需要服务器的支持-------------提供一个公共访问空间(客户端和服务端交互的空间)
//openJms默认的端口是1099
properties.put(Context.PROVIDER_URL,
"rmi://localhost:1099/");//在jms 服务器安装目录下config/openjms.xml中这个值可以根据需求修改
Context context = new InitialContext(properties);
//获得JMS信息连接队列工厂
QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory) context.lookup(
"JmsQueueConnectionFactory");
//获得JMS信息连接队列
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();
//产生队列Session,设置事务为false,自动应答消息接收
QueueSession queueSession =
queueConnection.createQueueSession(
false,
Session.AUTO_ACKNOWLEDGE);
//获得默认内建在JMS里的队列之一:queue1
Queue queue = (Queue) context.lookup("queue1");
//产生JMS队列发送器
QueueSender queueSender =
queueSession.createSender(queue);
//发送数据到JMS
TextMessage message = queueSession.createTextMessage();
message.setText("Hello, I'm openJms.");
queueSender.send(message);
System.out.println(
""信息写入JMS服务器队列");
//以下做清除工作,代码略
// ... ...
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上是把我们新建的消息“Hello, I'm openJms” 发送到 jms服务器中queue1中,我们可以运行jms服务器bin下的admin.bat查看我们queue1中的消息数目1;
下面我们可以或取jms服务器中我们刚才发送的消息代码如下:
import java.util.*;
import javax.jms.*;
import javax.naming.*;
public class QueueReceiveSynchronous {
public static void main(String[] args) {
try {
//取得JNDI上下文和连接
Hashtable properties = new Hashtable();
properties.put(
Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");//这个地方是核心部分需要服务器的支持-------------提供一个公共访问空间(客户端和服务端交互的空间)
properties.put(Context.PROVIDER_URL,
"rmi://localhost:1099/");
Context context = new InitialContext(properties);
//获得JMS信息连接队列工厂
QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory) context.lookup(
"JmsQueueConnectionFactory");
//获得JMS信息连接队列
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();
//启动接收队列线程
queueConnection.start();
//产生队列Session,设置事务为false,自动应答消息接收
QueueSession queueSession =
queueConnection.createQueueSession(
false,
Session.AUTO_ACKNOWLEDGE);
//获得默认内建在JMS里的队列之一:queue1
Queue queue = (Queue) context.lookup("queue1");
//产生JMS队列接收器
QueueReceiver queueReceiver =
queueSession.createReceiver(queue);
//通过同步的方法接收消息
Message message = queueReceiver.receive();
String messageText = null;
if (message instanceof TextMessage)
messageText = ((TextMessage) message).
getText();
System.out.println(messageText);
//以下做清除工作,代码略
// ... ...
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上的代码可以把我们刚才发送到JMS服务上的消息“Hello, I'm openJms”取出来;以上两个java类不需要新建WEB工程直接新建JAVA工程就可以,需要加入额外的包:
commons-logging-1.0.4.jar
excalibur-util-concurrent-1.3.1.jar
jms-1.1.jar
openjms-0.7.7-beta-1.jar
openjms-common-0.7.7-beta-1.jar
openjms-net-0.7.7-beta-1.jar
openjms-tools-0.7.7-beta-1.jar
spice-jndikit-1.2.jar
分享到:
相关推荐
在这个"JMS demo 及 资料"的压缩包中,我们可能找到了一些关于JMS的基础教程和示例代码,帮助初学者了解和掌握JMS的基本用法。 JMS的核心概念主要包括以下几个部分: 1. **消息**: 消息是JMS中的基本数据单元,它...
Java 消息服务(JMS,Java Message Service)是一种用于在分布式系统中进行异步数据交换的API,它为应用程序提供了标准的接口来发送和接收消息。...理解和掌握JMS的基本概念和用法,对于开发企业级Java应用至关重要。
3. **消息接口**:`javax.jms.Message`是所有JMS消息的基类,包含了一系列的方法,如`setObjectProperty`、`getStringProperty`、`getText`等,用于设置和获取消息属性和内容。JMS还定义了几个特定类型的消息接口,...
首先,我们需要理解JMS的基本概念。在JMS中,消息生产者(Producer)负责创建和发送消息,而消息消费者(Consumer)则负责接收和处理这些消息。消息是通过队列(Queue)或主题(Topic)进行传输的。队列遵循FIFO...
5. **MessageProducer** 和 **MessageConsumer**: 这两个是JMS API的基本组件,分别用于发送和接收消息。Spring的JmsTemplate是对这两个接口的高级封装。 6. **Transaction Management**: Spring可以提供基于JTA的...
通过使用SpringJMS,开发者可以避免直接处理JMS API的复杂性,而是利用Spring的依赖注入和模板方法设计模式来创建消息驱动的应用程序。 2. **Java消息服务(JMS)** JMS是一种标准API,允许应用程序创建、发送、...
WebLogic Server是一款由Oracle公司提供的企业级Java应用服务器,它支持Java ...同时,熟悉源码和工具的使用能帮助你更好地诊断和优化JMS服务器的性能。在实际操作中,一定要遵循最佳实践,确保系统的稳定性和安全性。
首先,让我们理解ActiveMQ和JMS的基本概念。 ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,允许应用程序之间进行异步通信。JMS是一种标准接口,用于Java平台上的消息传递,提供了可靠的...
JMS API JAVADOC是开发者的重要参考资料,详细解释了每个类、接口及其方法的使用,帮助开发人员更好地理解和应用JMS。 1. **基本概念** - **消息**: 在JMS中,消息是数据传输的基本单元,它包含了发送者想要传递的...
本文档旨在详细介绍JMS的基本结构、开发实例,帮助读者从入门到精通。 #### 二、JMS的基本结构 JMS提供了两个主要的消息域:点对点(PTP)和发布/订阅(Pub/Sub)。 1. **点对点(PTP)**:在此模式下,消息发送给特定的...
本示例“java-jms小例子”旨在演示JMS的基本用法。JMS的核心概念包括消息生产者、消息消费者和消息队列/主题。在这个小例子中,我们将探讨如何创建这两者以及如何利用它们进行通信。 1. **消息生产者**:在JMS中,...
1. **消息(Message)**:JMS中的基本数据单元,包含数据和元数据(如目标地址、优先级等)。消息可以是文本、对象、文件或其他形式的数据。 2. **消息生产者(Message Producer)**:创建并发送消息的应用程序或...
首先,我们需要了解JMS的基本概念。JMS包括两种主要的消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe)。在点对点模型中,消息从一个生产者发送到一个队列,然后由一个或多个消费者接收。...
JMS的基本操作是发送和接收消息。在这些实例中,我们将看到如何使用生产者(Producer)创建消息并发送到队列(Queue)或主题(Topic)。消费者(Consumer)则从这些队列或主题中接收消息。理解如何创建消息对象,...
《JMS规范培训教程》这份文档很可能是深入理解JMS标准和实际应用的指南,它可能涵盖了JMS的基本概念、API用法、消息模型的比较、事务处理、消息持久化、故障恢复策略等内容。通过学习这份教程,开发者能够熟练地在...
- **消息**:在JMS中,消息是数据传输的基本单位,包含要传递的信息。 - **消息队列(Message Queue)**:存储消息的临时容器,确保消息被正确地发送和接收。 - **生产者(Producer)**:创建并发送消息到消息...
本示例代码将帮助我们深入理解JMS的基本用法和概念。 JMS的核心组件包括生产者(Producer)、消费者(Consumer)和消息队列(Message Queue)。生产者创建并发送消息,消费者接收并处理这些消息,而消息队列则作为...