J2EE----JMS
1、JMS是一个由AS提供的Message服务。它能接受消息产生者(Message Provider)所发出的消息,并把消息转发给消息消费者(Message Consumer)。
2、JMS提供2种类型的消息服务:(1)Queue,即点对点,每个消息只转发给一个消息消费者使用。(2)Topic,即发布和订阅,每个消息可以转发给所有的订阅者(消费者)。
3、jboss下的JMS配置:
(1)配置JMS Connection Factory
(2)配置JMS File Store
(3)配置JMS Server
(4)在JMS Server的destinations中配置JMS Queue或者JMS Topic
其中提供给消息产生者和消息消费者使用的是JMS Connection Factory的JNDI和JMS Queue或者JMS Topic的JNDI。
4、消息产生者向JMS发送消息的步骤:
(1)使用JNDI查询对象JMS ConnectionFactory和Destination(JMS Queue/Topic)
(2)使用管理对象JMS ConnectionFactory建立连接Connection
(3)使用连接Connection 建立会话Session
(4)使用会话Session和管理对象Destination创建消息生产者MessageSender
(5)使用消息生产者MessageSender发送消息
一个消息发送者的例子:
package myjms;
import java.util.*;
import javax.naming.*;
import javax.jms.*;
public class MessageProducter {public static void main(String[] args) {String queueConnectionFactoryName = "myjmsconnectionfactory"; //JMS Connection Factory的JNDIString queueName = "myjmsqueue"; //JMS Queue或者JMS Topic的JNDIboolean transacted = false;//transaction模式int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;//acknowledgement模式String message="Message need to send";//模拟需要发送的消息Properties properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");properties.put(Context.PROVIDER_URL, "t3://localhost:7001");try {Context context = new InitialContext(properties);Object obj = context.lookup(queueConnectionFactoryName);QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;//JMS Connection Factory的获得obj = context.lookup(queueName);Queue queue = (Queue) obj;//JMS Queue或者JMS Topic的获得QueueConnection queueConnection=queueConnectionFactory.createQueueConnection();//产生连接queueConnection.start();QueueSession queueSession = queueConnection.createQueueSession(transacted, acknowledgementMode);TextMessage textMessage = queueSession.createTextMessage();textMessage.clearBody();textMessage.setText(message);QueueSender queueSender = queueSession.createSender(queue);queueSender.send(textMessage);if (transacted) {queueSession.commit();}if (queueSender != null) {queueSender.close();}if (queueSession != null) {queueSession.close();}if (queueConnection != null) {queueConnection.close();}}catch(Exception ex){ex.printStackTrace();}}
}
5、消息消费者从JMS接受消息的步骤:
(1)使用JNDI查询对象JMS ConnectionFactory和Destination(JMS Queue/Topic)
(2)使用管理对象JMS ConnectionFactory建立连接Connection
(3)使用连接Connection 建立会话Session
(4)使用会话Session和管理对象Destination创建消息消费者MessageReceiver
(5)使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver
消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。
一个消息消费者的例子:
package myjms;
import java.util.*;
import javax.naming.*;
import javax.jms.*;
public class MessageRecieverimplements MessageListener {public void onMessage(Message message) {if (message instanceof TextMessage) {TextMessage textMessage = (TextMessage) message;try {System.out.println("Message content is:" + textMessage.getText());}catch (JMSException e) {e.printStackTrace();}}}public static void main(String[] args) {MessageReciever msgRcvr=new MessageReciever();String queueConnectionFactoryName = "myjmsconnectionfactory";String queueName = "myjmsqueue";boolean transacted = false;int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;Properties properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");properties.put(Context.PROVIDER_URL, "t3://localhost:7001");try {Context context = new InitialContext(properties);Object obj = context.lookup(queueConnectionFactoryName);QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)obj;obj = context.lookup(queueName);Queue queue = (Queue) obj;QueueConnection queueConnection = queueConnectionFactory.createQueueConnection();queueConnection.start();QueueSession queueSession = queueConnection.createQueueSession(transacted,acknowledgementMode);QueueReceiver queueReceiver = queueSession.createReceiver(queue);queueReceiver.setMessageListener(msgRcvr);synchronized(msgRcvr){msgRcvr.wait(100000);}if (queueReceiver != null) {queueReceiver.close();}if (queueSession != null) {queueSession.close();}if (queueConnection != null) {queueConnection.close();}}catch (Exception ex) {ex.printStackTrace();}}
}
J2EE----JMS相关推荐
- Spring - Java/J2EE Application Framework 应用框架 第 14 章 JMS支持
第 14 章 JMS支持 14.1. 介绍 Spring提供一个用于简化JMS API使用的抽象层框架,并且对用户屏蔽JMS API中从1.0.2到1.1版本之间的不同. JMS大体上被分为两个功能块 ...
- J2EE技术(三)——JMS
一.JMS基本思想 JMS(Java Message Service)即java消息服务,提供了一组标准的java API,用于企业级的消息处理.通过JMS可以在java程序之间发送和接受消息以达到 ...
- 有福了,J2EE面试题集锦(附答案)
一.基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math ...
- J2EE的13种核心技术规范
J2EE主要用于创建可扩展的企业应用,包括13种核心技术规范: 1. JDBC(Java Database Connectivity,Java数据库连接) JDBC以一种统一的方式对各种各样的数据库进 ...
- J2EE面试题集锦(附答案)
转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案) 一.基础问答 1.下面哪些类可以被继承? java.lan ...
- 揭开J2EE集群的神秘面纱(一):什么是J2EE集群
揭开J2EE集群的神秘面纱(一):什么是J2EE集群 作者:不详 来源:CSDN博客 酷勤网收集 2008-04-18 摘要 酷勤网 J2EE集群技术包括负载均衡和失效转移.负载均衡意味着有许多客户端 ...
- J2EE的十三个规范
J2EE想必大家都不陌生吧,貌似现在更流行将其称作JavaEE,不管名字怎么变,核心和思想是没有变的.学习J2EE首先要了解它的规范,下面我们一起看看它的十三个规范. 1,JDBC(Java Data ...
- 当前流行的J2EE WEB应用架构分析
架构概述 J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术.这些技术的出现给电子商务时代的WEB ...
- activeMQ Jms Demo
概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经 ...
- J2EE的13种核心技术
Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...
最新文章
- 使用系统调用pipe建立一条管道线_【Linux系统】Linux进程间通信
- ManicTime软件破解
- SQL Server脏读方式数据提取---NOLOCK和READPAST
- Java笔记3:Eclipse添加jar包
- mysql8.0 创建用户并授权
- POJ 3279 Fliptile
- 制造车间怎么推行5S管理?
- 移动端 web 开发的设计稿与工作流
- 《财务共享服务》读书笔记
- vue配置代理服务器proxy
- 高校实验室设备预约管理系统
- Contiki学习——HelloWorld
- LDAP基础:3:通过389端口对openldap进行操作
- c51语言中数据的存储类型,C51-数据存储类型
- Centos7下mysql安装详解
- java系统类的名称_获取准确的操作系统名称的Java工具类
- 胡晓明:计算,探索未知的价值
- 互融云工业品电商系统开发整体解决方案 助力行业数字信息化发展
- 苹果的Retina技术 视网膜支持的应用
- php 判断键值重复合并,php数组实现根据某个键值将相同键值合并生成新二维数组的方法...