Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API。JMS的创建过程类似于Hibernate的工厂模式。JMS支持两种消息类型:点对点(PTP)和发布/订阅式(pub/sub)。PTP消息被生产者放入到一个队列中,消费者则从消息队列中取走消息。消息一旦被一个消息者取走,消息就从队列中移除,这意味着即使有多个消费者观察一个队列,但一条消息只能被一个消费者取走。PUB/SUB消息则需要先注册,然后消息异步发送到订阅者,可以有多个订阅者。
实现所包括的步骤:
- 创建JNDI初始上下文(context)。
- 从JNDI上下文获取一个队列连接工厂。
- 从队列连接工厂中获取一个Quene。
- 创建一个Session对象。
- 创建一个发送者(sender)或接收者(receiver)对象。
- 使用步骤5创建的发送者或接收者对象发送或接收消息。
- 处理完消息后,关闭所有JMS资源。
安装完成Weblogic9.2后,启动服务进入控制台, 点击JMS Modules——>examples-jms
修改JNDI名称为myqueue,mytopic这样在之后的初始化过程中,我们就可以通过名称查找创建连接工厂
服务端代码如下:
package www.lring.net;
import java.util.Hashtable;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
public class Test {
public static void main(String[] args){
try{
// TODO Auto-generated method stub
Hashtable<String,String> table = new Hashtable<String,String>();
table.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
table.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context cxt = new InitialContext(table);
// 获得可以进行点对点操作的消息连接工厂,连接工厂一定要先设置好
QueueConnectionFactory factory = (QueueConnectionFactory)
cxt.lookup("weblogic.examples.jms.QueueConnectionFactory");
// 获得连接,获得了可以使用消息服务的权利
QueueConnection conn = factory.createQueueConnection();
// 获得一个队列对象
Queue q = (Queue) cxt.lookup("myqueue");//从连接工厂中获得一个连接,用这个连接去连接要暂存消息的队列
// 获得一次消息发送的会话对象
QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
// 建立消息的发送对象
QueueSender sender = session.createSender(q);
// 我要发送的消息内容封装到一个message的实现者中。
TextMessage message = (TextMessage) session.createTextMessage();
// 写入消息
message.setText("邢海峰hello world......");
// 发送消息
sender.send(message);
sender.close();
session.close();
conn.close();
cxt.close();
// TopicConnectionFactory topicfactory = (TopicConnectionFactory) cxt.lookup("weblogic.examples.jms.TopicConnectionFactory");
}catch(Exception e ){
e.printStackTrace() ;
}
}
}
客户端代码如下:
package www.lring.net;
import java.util.Hashtable;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
public class GetMessage {
public GetMessage() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Hashtable<String,String> table = new Hashtable<String,String>();
table.put(Context.INITIAL_CONTEXT_FACTORY, weblogic.jndi.WLInitialContextFactory.class.getName());
table.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context context = new InitialContext(table);
QueueConnectionFactory factory = (QueueConnectionFactory)
context.lookup("weblogic.examples.jms.QueueConnectionFactory");
Queue q = (Queue) context.lookup("myqueue");
QueueConnection conn = factory.createQueueConnection();
// session.setMessageListener(arg0);
// 消息的提取本身是异步的
QueueSession session = conn.createQueueSession(false, 0);
// 获得一个消息的接受者
// 获得消息,消费消息
conn.start();
QueueReceiver receiver = session.createReceiver(q);
// receiver.setMessageListener(new MyLinener());
// while(true)
// {
// Thread.sleep(1000);
// System.out.println("..............");
// }
TextMessage message = (TextMessage) receiver.receive();
System.out.println(message.getText());
conn.close();
}
}
分享到:
相关推荐
【WebLogic 与 JMS+Spring 整合详解】 WebLogic 是由 BEA Systems(现已被 Oracle 收购)开发的一款 Java 应用服务器,它主要用于构建、部署和管理大型分布式Web应用、网络应用和数据库应用。WebLogic 提供了对多种...
Weblogic的安装过程相对简单,只需遵循官方提供的指导文档即可。安装时,设置用户名和密码为`weblogic`,这将作为管理控制台的登录凭据。 完成安装后,建议新建一个默认域(domain),这是Weblogic用于组织和管理...
WebLogic Server是一款由Oracle公司提供的企业级Java应用服务器,它支持Java ...同时,熟悉源码和工具的使用能帮助你更好地诊断和优化JMS服务器的性能。在实际操作中,一定要遵循最佳实践,确保系统的稳定性和安全性。
通过理解并熟练掌握上述内容,你将在WebLogic环境中成功地利用JMS进行消息传递,无论是简单的点对点通信还是复杂的发布/订阅模式,都能游刃有余。请务必根据具体需求进行配置,并确保测试环节充分,以确保JMS服务的...
总之,配置 WebLogic JMS 服务器需要理解 JMS 的基本概念,熟练使用 WebLogic 管理控制台,并且根据实际业务需求调整相关参数。正确配置后,JMS 服务器能为你的应用程序提供可靠的异步通信和消息传递能力。
通过以上介绍,我们可以看到如何在MyEclipse环境下使用WebLogic Server来开发和部署EJB应用程序。从WebLogic Server的安装配置到EJB项目的创建、部署,再到具体的EJB组件设计,每一个步骤都至关重要。此外,对于初学...
通过使用JMS,开发者可以专注于业务逻辑,而不必关心底层的消息传输细节,这极大地提高了代码的可移植性和系统的灵活性。同时,JMS提供的消息持久化和优先级机制确保了消息的重要性和可靠性。在WebLogic这样的应用...
在WebLogic中,这通常涉及到JMS API的`ConnectionFactory`、`QueueConnectionFactory`、`Queue`、`MessageProducer`和`MessageConsumer`等接口的使用。 在实际应用中,JMS可以用来实现异步处理、负载均衡、系统间...
自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考
4. **JMS集成**:WebLogic Server支持JMS,源代码可能涉及到消息生产者和消费者的实现,用于异步通信和解耦应用组件。 5. **JNDI查找**:在J2EE环境中,Java Naming and Directory Interface (JNDI)用于查找和绑定...
- 使用Weblogic管理控制台或者 WLST(WebLogic Scripting Tool)进行应用部署和管理。 - 配置数据源、JMS资源等,以便EJB3应用可以访问。 4. **EJB3客户端**: - 客户端通常通过接口调用Bean的方法,实现对...
Weblogic支持EJB、JMS、JSP、Servlet等标准,还具备集群、负载均衡和安全管理等功能,是企业级应用的首选服务器。 2. **EJB3(Enterprise JavaBeans 3)**:EJB是Java EE规范的一部分,用于构建可复用的、安全的、...
6. **部署和测试**:部署配置好的JMS模块到WebLogic Server,并编写简单的生产者和消费者程序来测试配置是否正确。生产者会向队列或主题发布消息,而消费者则会订阅并接收这些消息。 在实际开发中,WebLogic还提供...
在本文中,我们将深入探讨如何进行`weblogic9-jms-applet`的开发,涵盖从Applet的基础知识到WebLogic 9.2的JMS配置,以及相关注意事项和一个简单的JNI实例。让我们逐步解析这个过程。 **1. Applet基础问题** ...
此外,还有IBM的MQSeries、Progress的SonicMQ、Fiorano的FioranoMQ、Softwired的iBus、BEA的WebLogic和Jboss的SpyderMQ等其他知名供应商。 2. **JMS基本概念**: - **消息**:消息由消息主体(数据)和消息标题...
WebLogic 11g JMS配置涉及创建JMS服务器、模块、连接工厂和队列,以便在企业级应用中实现消息传递。以下是对配置过程的详细说明: 1. **安装WebLogic 11g**:首先,需要安装Oracle WebLogic Server 11g,这通常包括...
在WebLogic环境中,你可能需要确保JMS连接、会话和消费者都已正确配置和关闭,以确保优雅的退出。当收到SIGINT信号时,除了清理信号处理器之外,还应该确保所有JMS资源被适当关闭,防止数据丢失或资源泄漏。 为了更...
通过使用WebLogic JMS,开发人员可以轻松地创建生产者/消费者模型,实现消息队列和主题功能,并利用持久化存储等高级特性确保消息的可靠传递。 #### 部署JMS应用程序 1. **环境准备**:首先需要安装并配置好...
- **发送测试消息**:编写简单的Java应用程序或使用WebLogic控制台测试消息发送和接收。 - **监控和调试**:利用WebLogic的监控工具检查JMS服务器的状态、性能和错误信息。 综上所述,在Linux环境下部署WebLogic...