`

weblogic+jms的简单使用

    博客分类:
  • JMS
 
阅读更多

Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API。JMS的创建过程类似于Hibernate的工厂模式。JMS支持两种消息类型:点对点(PTP)和发布/订阅式(pub/sub)。PTP消息被生产者放入到一个队列中,消费者则从消息队列中取走消息。消息一旦被一个消息者取走,消息就从队列中移除,这意味着即使有多个消费者观察一个队列,但一条消息只能被一个消费者取走。PUB/SUB消息则需要先注册,然后消息异步发送到订阅者,可以有多个订阅者。

实现所包括的步骤:

  1. 创建JNDI初始上下文(context)。
  2. 从JNDI上下文获取一个队列连接工厂。
  3. 从队列连接工厂中获取一个Quene。
  4. 创建一个Session对象。
  5. 创建一个发送者(sender)或接收者(receiver)对象。
  6. 使用步骤5创建的发送者或接收者对象发送或接收消息。
  7. 处理完消息后,关闭所有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();
	}

}

 

 

 

 

 

 

分享到:
评论

相关推荐

    JMS入门小例子以及weblogic安装,并且在weblogic中配置JMS服务

    本例详细介绍了如何配置JMS服务以及weblogic的安装及在weblogic中配置JMS服务,例子简单易懂,文档含代码,适合初学者学习使用

    java weblogic jms temple

    自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考

    WebLogic下配置的JMS.+例子

    WebLogic下配置的JMS的教程,还有一个简单的实例,weblogic是8.1的

    Oracle WebLogic Server开发权威指南

    书中描述的很多技术、框架、部署技术和管理工具都要求使用这个版本的WebLogic Server 和最新 版本的Java EE 环境以及相关的各种库和框架。本书中构建的主要示例应用程序bigrez.com 要求 使用WebLogic Server 11g。 ...

    JMS与ActiveMQ

    许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 ...

    jms-2.0-poc:此应用程序是JMS-2.0的POC,它使用注释来定义和使用JMS模块。

    此应用程序是JMS-2.0的poc,它使用批注定义和使用JMS模块。 本示例演示了以下关键JMS注释的用法: @JMSDestinationDefinitions @JMSDestinationDefinition @JMSConnectionFactoryDe​​finition @...

    Java面试宝典大全+涵盖Java所有知识面

    10、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 130 11、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld....

    Spring中文帮助文档

    2.4.4. 异步的JMS 2.4.5. JDBC 2.5. Web层 2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持...

    Spring API

    2.4.4. 异步的JMS 2.4.5. JDBC 2.5. Web层 2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持...

    h_JAVA 2应用编程150例.rar

    实例119 Request-Reply模式的JMS应用 421 实例120 使用Java IDL 426 实例121 EJB与CORBA的交互 430 实例122 基于EJB的真实世界模型 433 实例123 EJB的商业应用——定购单 447 第11章 Java 2 Platform Micro Edition...

    Spring 2.0 开发参考手册

    19.2. 使用Spring JMS 19.2.1. JmsTemplate 19.2.2. 连接工厂 19.2.3. (消息)目的地管理 19.2.4. 消息侦听容器 19.2.5. 事务管理 19.3. 发送一条消息 19.3.1. 使用消息转换器 19.3.2. SessionCallback 和...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5...

    java 面试题 总结

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、...

    java面试宝典

    31、java 中会存在内存泄漏吗,请简单描述。 11 32、abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized? 11 33、静态变量和实例变量的区别? 11 34、是否可以从一个static 方法...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    超级有影响力霸气的Java面试题大全文档

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...

    java面试题

    76.4. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 86 76.5. 在weblogic中发布ejb需涉及到哪些配置文件 87 76.6. 如何在weblogic中...

    java基础题 很全面

    16. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 22 17. 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld....

Global site tag (gtag.js) - Google Analytics