- 浏览: 305454 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (167)
- <HTML and JavaScript and CSS> (6)
- 《Java2 基础知识及概念》 (3)
- Java2 Tools及其他 (11)
- EJB2.0 相关 (3)
- 英语学习 (4)
- Oracle Database Server (27)
- 计算机理论 (9)
- Java持久层框架 (2)
- 《Linux操作系统》 (24)
- 杂项技术 (4)
- Application Server (15)
- Windows操作系统 (7)
- Java中间件 (6)
- 娱乐生活 (4)
- 《Java设计模式》 (3)
- 《Interview Skill》 (1)
- 《Struts原理及应用》 (1)
- Workflow (2)
- 云计算 (3)
- 项目实践 (3)
- WEB相关技术 (10)
- JavaScript技巧及应用 (1)
最新评论
一个 JMS 应用程序由下列元素组成:
· JMS 客户机。 用 JMS API 发送和接收消息的 Java 程序。
· 非 JMS(Non-JMS)客户机。 认识到这一点很重要 - 旧的程序经常成为整个 JMS 应用程序的一部分,而且它们的包含应该在设计时预先考虑。
· 消息。 在 JMS 和非 JMS 客户机之间交换的消息的格式和内容是 JMS 应用程序设计所必须考虑的部分。
· JMS 供应商。供应商必须提供特定于其 MOM 产品的具体的实现。
· 受管对象。 消息传递系统供应商的管理员创建了一个对象,它独立于供应商专有的技术。包括连接工厂ConnectionFactory和目的Destination。
一种典型的 JMS 程序需要经过下列步骤才能开始消息产生和使用:
· 通过 JNDI 查找 ConnectionFactory。
· 通过 JNDI 查找一个或多个 Destination。
· 用 ConnectionFactory 创建一个 Connection。
· 用 Connection 创建一个或多个 Session。
· 用 Session 和 Destination 创建所需的 MessageProducer 和 MessageConsumer。
· 启动 Connection。
下面利用上面配置的JMS资源演示点对点消息发送和接收的过程。
五. 设计消息发送端
1. 使用的JMS资源
服务器URL: t3://localhost:80
连接工厂: SendJMSFactory
队列: SendJMSQueue
2. 设计步骤
· 初始化JNDI Tree
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
· lookup ConnectionFactory
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
· lookup Destination
queue = (Queue) ctx.lookup(queueName);
· 用 ConnectionFactory 创建Connection
qcon = qconFactory.createQueueConnection();
· 用 Connection 创建一个Session
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
· 用 Session 和 Destination 创建MessageProducer
qsender = qsession.createSender(queue);
· 启动 Connection。
qcon.start();
· 发送消息
msg = qsession.createTextMessage();
msg.setText(message);
qsender.send(msg);
3. 源代码
package jmssample; import java.util.Hashtable; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** This example shows how to establish a connection * and send messages to the JMS queue. The classes in this * package operate on the same JMS queue. Run the classes together to * witness messages being sent and received, and to browse the queue * for messages. The class is used to send messages to the queue. * * @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved. */ public class QueueSend { // Defines the JNDI context factory. public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; // Defines the JNDI provider url. public final static String PROVIDER_URL=" t3://localhost:80"; // Defines the JMS connection factory for the queue. public final static String JMS_FACTORY="SendJMSFactory"; // Defines the queue. public final static String QUEUE="SendJMSQueue"; private QueueConnectionFactory qconFactory; private QueueConnection qcon; private QueueSession qsession; private QueueSender qsender; private Queue queue; private TextMessage msg; /** * Creates all the necessary objects for sending * messages to a JMS queue. * * @param ctx JNDI initial context * @param queueName name of queue * @exception NamingException if operation cannot be performed * @exception JMSException if JMS fails to initialize due to internal error */ public void init(Context ctx, String queueName) throws NamingException, JMSException { qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); qcon = qconFactory.createQueueConnection(); qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); queue = (Queue) ctx.lookup(queueName); qsender = qsession.createSender(queue); msg = qsession.createTextMessage(); qcon.start(); } /** * Sends a message to a JMS queue. * * @param message message to be sent * @exception JMSException if JMS fails to send message due to internal error */ public void send(String message) throws JMSException { msg.setText(message); qsender.send(msg); } /** * Closes JMS objects. * @exception JMSException if JMS fails to close objects due to internal error */ public void close() throws JMSException { qsender.close(); qsession.close(); qcon.close(); } /** main() method. * * @param args WebLogic Server URL * @exception Exception if operation fails */ public static void main(String[] args) throws Exception { InitialContext ic = getInitialContext(); QueueSend qs = new QueueSend(); qs.init(ic, QUEUE); readAndSend(qs); qs.close(); } private static void readAndSend(QueueSend qs) throws IOException, JMSException { BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in)); String line=null; boolean quitNow = false; do { System.out.print("Enter message (\"quit\" to quit): "); line = msgStream.readLine(); if (line != null && line.trim().length() != 0) { qs.send(line); System.out.println("JMS Message Sent: "+line+"\n"); quitNow = line.equalsIgnoreCase("quit"); } } while (! quitNow); } private static InitialContext getInitialContext() throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); env.put(Context.PROVIDER_URL, PROVIDER_URL); return new InitialContext(env); } }
六. 设计消息接收端
1. 使用的JMS资源
服务器URL: t3://localhost:80
连接工厂: SendJMSFactory
队列: SendJMSQueue
2. 设计步骤
· 初始化JNDI Tree
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
return new InitialContext(env);
· lookup ConnectionFactory
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
· lookup Destination
queue = (Queue) ctx.lookup(queueName);
· 用 ConnectionFactory 创建Connection
qcon = qconFactory.createQueueConnection();
· 用 Connection 创建一个Session
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
· 用 Session 和 Destination 创建MessageConsumer
qreceiver = qsession.createReceiver(queue);
· 设置监听
qreceiver.setMessageListener(this);
· 启动 Connection
qcon.start();
3. 源代码
package jmssample; import java.util.Hashtable; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; /** * This example shows how to establish a connection to * and receive messages from a JMS queue. The classes in this * package operate on the same JMS queue. Run the classes together to * witness messages being sent and received, and to browse the queue * for messages. This class is used to receive and remove messages * from the queue. * * @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved. */ public class QueueReceive implements MessageListener { // Defines the JNDI context factory. public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; // Defines the JNDI provider url. public final static String PROVIDER_URL=" t3://localhost:80"; // Defines the JMS connection factory for the queue. public final static String JMS_FACTORY="SendJMSFactory"; // Defines the queue. public final static String QUEUE="SendJMSQueue"; private QueueConnectionFactory qconFactory; private QueueConnection qcon; private QueueSession qsession; private QueueReceiver qreceiver; private Queue queue; private boolean quit = false; /** * Message listener interface. * @param msg message */ public void onMessage(Message msg) { try { String msgText; if (msg instanceof TextMessage) { msgText = ((TextMessage)msg).getText(); } else { msgText = msg.toString(); } System.out.println("Message Received: "+ msgText ); if (msgText.equalsIgnoreCase("quit")) { synchronized(this) { quit = true; this.notifyAll(); // Notify main thread to quit } } } catch (JMSException jmse) { jmse.printStackTrace(); } } /** * Creates all the necessary objects for receiving * messages from a JMS queue. * * @param ctx JNDI initial context * @param queueName name of queue * @exception NamingException if operation cannot be performed * @exception JMSException if JMS fails to initialize due to internal error */ public void init(Context ctx, String queueName) throws NamingException, JMSException { qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); qcon = qconFactory.createQueueConnection(); qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); queue = (Queue) ctx.lookup(queueName); qreceiver = qsession.createReceiver(queue); qreceiver.setMessageListener(this); qcon.start(); } /** * Closes JMS objects. * @exception JMSException if JMS fails to close objects due to internal error */ public void close()throws JMSException { qreceiver.close(); qsession.close(); qcon.close(); } /** * main() method. * * @param args WebLogic Server URL * @exception Exception if execution fails */ public static void main(String[] args) throws Exception { InitialContext ic = getInitialContext(); QueueReceive qr = new QueueReceive(); qr.init(ic, QUEUE); System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message)."); // Wait until a "quit" message has been received. synchronized(qr) { while (! qr.quit) { try { qr.wait(); } catch (InterruptedException ie) {} } } qr.close(); } private static InitialContext getInitialContext() throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); env.put(Context.PROVIDER_URL, PROVIDER_URL); return new InitialContext(env); } }
七. 测试消息发送和接收
1)启动cmd 进入weblogic81\server\bin中输入setWSLenv.cmd
设置好环境变量后,进入jmssmaple中javac编译代码,再执行java 运行接收端。
2)再次启动一个cmd 进入weblogic81\server\bin中输入setWSLenv.cmd
设置好环境变量后,进入jmssmaple中执行java 运行发送端。
这样就可以完成收发消息了。
发表评论
文章已被作者锁定,不允许评论。
-
Weblogic集群概念和配置
2010-08-10 15:26 2135Domain定义一Domain是WebLogi ... -
《J2EE集群原理》
2010-08-09 14:01 1291原文出自 http://www.theserverside ... -
Weblogic环境下JMS配置
2010-07-30 17:39 836Weblogic环境下JMS配置 参见附件 -
JMS五种消息的发送/接收的例子
2010-07-29 21:10 12481、消息发送 //连接工厂 ConnectionFa ... -
深入掌握JMS
2010-07-26 15:49 35201. JMS基本概念 JMS(Java Message ...
相关推荐
WebLogic Server是一款由Oracle公司提供的企业级应用服务器,它支持Java Message Service (JMS) 规范,允许在分布式环境中可靠地发送和接收消息。JMS是Java平台上的标准接口,用于实现应用程序间的异步通信。本文将...
在WebLogic中整合JMS(Java Message Service)和Spring框架,可以实现异步消息处理,提高系统的响应速度和并发处理能力。JMS 是一个为Java平台设计的消息中间件接口,它允许应用程序通过消息传递进行通信,而Spring...
1. **创建JMS模块**:在WebLogic管理控制台中,首先需要创建一个新的JMS模块,这将定义消息传递基础设施的容器。 2. **定义JMS服务器**:在JMS模块下,需要创建JMS服务器,这将是实际运行消息传递服务的地方。 3. ...
标题"Spring+weblogic接收JMS消息"涉及到的核心知识点是Spring框架与WebLogic Server之间的整合,以及如何利用Spring来处理JMS消息。下面将详细讲解这两个方面的内容。 1. **Spring对JMS的支持**: - Spring通过`...
理解并正确配置JMS服务器在WebLogic中至关重要,因为它能有效地支持基于消息的通信,提高系统的可靠性和可扩展性。同时,熟悉源码和工具的使用能帮助你更好地诊断和优化JMS服务器的性能。在实际操作中,一定要遵循...
本话题主要探讨如何在Spring框架下与WebLogic 9.2集成,实现JMS(Java Message Service)消息的发送。 首先,JMS是一种标准的API,用于在分布式环境中传递消息。通过JMS,应用可以在异步和解耦的方式下进行通信,...
1. **消息**:JMS中的消息是数据的载体,它可以携带任何类型的数据,并在生产者和消费者之间传递。 2. **消息生产者**:负责创建和发送消息到目的地的组件。 3. **消息消费者**:接收并处理来自目的地的消息的组件。...
JMS(Java Message Service)则是一种标准的API,用于在分布式系统中进行消息传递,提供异步通信的能力。WebLogic是Oracle公司的一款强大且成熟的Java EE应用服务器,它支持JMS服务。这个"springboot集成weblogic的...
WebLogic Server 是一款由 Oracle 公司提供的企业级 Java 应用服务器,它支持 Java Message Service (JMS),一个标准的 Java API,用于在分布式环境中发送和接收消息。WebLogic JMS 服务器是 WebLogic Server 的一...
在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...
在IT行业中,JMS(Java Message Service)是一种标准接口,用于在不同的应用程序之间发送和接收消息,以实现异步通信。Spring框架是一个广泛使用的Java应用开发框架,它提供了与多种消息中间件集成的能力,包括...
在WebLogic中,JMS可以通过创建目的地(如队列或主题)、配置连接工厂以及管理消息生产者和消费者来实现。 首先,我们要理解JMS的核心概念: 1. **消息**:是数据的载体,它包含了要传输的信息。 2. **消息队列**:...
- **事务管理**:在WebLogic中,可以配置JMS与JDBC事务的一致性,确保消息处理和数据库操作的原子性。 5. **安全性**: - **身份验证**:数据源和JMS资源都需要安全配置,包括设置访问控制、认证和授权策略,以...
- **消息**:JMS中的核心元素,是数据传输的载体。 - **消息队列(Queue)**:FIFO(先进先出)结构,每个消息只被一个消费者消费。 - **主题(Topic)**:发布/订阅模式,一个消息可以被多个消费者消费。 2. **...
JMS中有两种主要的消息类型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)模式。 在点对点模式中,消息被发送到一个称为队列的特定目标,每个消息只有一个消费者。而在发布/订阅模式中...
WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...
JMS(Java Message Service)是Java平台中关于面向消息中间件(MOM)的标准接口,它定义了一组API用于消息生产和消费。JMS提供了两种类型的消息模型:点对点(Point-to-Point)和发布/订阅(Publish-Subscribe)。 ...
在WebLogic环境中配置JMS服务,可以实现应用程序之间的高效数据交换,尤其是在高并发和分布式系统中。接下来,我们将深入探讨在WebLogic环境下配置JMS的关键步骤和相关知识点。 首先,我们需要理解JMS的基本概念。...
Java消息服务(Java Message Service,简称JMS)是一种标准的API,用于在分布式环境中实现应用程序间的异步通信。在企业级应用程序开发中,JMS解决了RMI-IIOP(远程方法调用-Internet Inter-ORB协议)的一些局限,如...