Weblogic JMS 入门简单实例

        最近通过网上查询各中资料,简单学习了下JMS。对于原理,现在处于学习阶段,未完全融会贯通,本期先只提供简单实例源码和weblogic部署方法。希望能通过简单实例来完成JMS学习的入门。

环境:eclipse + weblogic 816

简介:部署发送端和接收端两个服务应用,发送端部署web应用并搭建JMS环境,JMS的相关jndi信息与代码中的一致。接收端应用,通过监听来自动接收发送端的消息。

注意:接收端服务必须在发送端服务启动之后才能正常使用。如果发送端重启了,服务端也必须重启。

一、JMS发送端

1、发送端应用工程搭建

(1)、发送端class编写:QueueSend类(主要参考网上相关源码)

package inspur.tax.wlkp.jms;

import java.util.Hashtable;

import javax.jms.JMSException;
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;
import javax.naming.NamingException;   

/**
 * 一种典型的 JMS 程序需要经过下列步骤才能开始消息产生和使用:
· 通过 JNDI 查找 ConnectionFactory。
· 通过 JNDI 查找一个或多个 Destination。 
· 用 ConnectionFactory 创建一个 Connection。 
· 用 Connection 创建一个或多个 Session。 
· 用 Session 和 Destination 创建所需的 MessageProducer 和 MessageConsumer。 
· 启动 Connection。 

 */  
public class QueueSend {
	
	/**
	 * 定义JNDI上下文构造器
	 */
	public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

	/**
	 * 服务URL(weblogic部署的地址)
	 */
	public final static String PROVIDER_URL = "t3://127.0.0.1:20001";

	/**
	 * 定义JMS上下文构造器(weblogic中部署时录入)
	 */ 
	public final static String JMS_FACTORY = "HanJMSFactory";

	/**
	 * 定义消息列队(weblogic中部署时录入)
	 */
	public final static String QUEUE = "HanJMSQueue";
	
	//声明队列连接构造器 
	private QueueConnectionFactory qconFactory;

	//声明队列连接 
	private QueueConnection qcon;

	// 声明队列会话 
	private QueueSession qsession;

	// 声明队列发送
	private QueueSender qsender;

	//声明队列
	private Queue queue;

	//声明发送对象
	/**
	JMS 为不同类型的内容提供了它们各自的消息类型,但是所有消息都派生自 Message 接口
	* StreamMessage:包含 Java 基本数值流,用标准流操作来顺序的填充和读取。
	* MapMessage:包含一组名/值对;名称为 string 类型,而值为 Java 的基本类型。
	* TextMessage:包含一个 String。
	* ObjectMessage:包含一个 Serializable Java 对象;能使用 JDK 的集合类。
	* BytesMessage:包含未解释字节流: 编码主体以匹配现存的消息格式。
	* XMLMessage: 包含XML内容。扩展TextMessage,XMLMessage 类型的使用,使得消息过滤非常便利。
	*/
	private TextMessage msg;//本事例使用TextMessage
	

	/**
	 * JMS消息的产生和使用
	 * @param mes 消息内容
	 */
	public void sendJmsQueue(String mes) throws Exception
	{
		InitialContext ic = getInitialContext();
		QueueSend qs = new QueueSend();
		qs.init(ic);
		qs.send(mes);
		qs.close();
	}
	
	/**
	 * 1、
	 * 通过 JNDI 查找 ConnectionFactory。
	 * 通过 JNDI 查找一个或多个 Destination。 
	 */
	private  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);
	}
	
	/**
	 *  2、
	 *  用 ConnectionFactory 创建一个 Connection。 
	 *	用 Connection 创建一个或多个 Session。 
	 *· 用 Session 和 Destination 创建所需的 MessageProducer 和 MessageConsumer。 
	 *· 启动 Connection。 
	 */
	public void init(Context ctx) throws NamingException,JMSExcept
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值