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相关推荐

  1. Spring - Java/J2EE Application Framework 应用框架 第 14 章 JMS支持

    第 14 章 JMS支持 14.1. 介绍 Spring提供一个用于简化JMS API使用的抽象层框架,并且对用户屏蔽JMS API中从1.0.2到1.1版本之间的不同. JMS大体上被分为两个功能块 ...

  2. J2EE技术(三)——JMS

     一.JMS基本思想 JMS(Java Message Service)即java消息服务,提供了一组标准的java API,用于企业级的消息处理.通过JMS可以在java程序之间发送和接受消息以达到 ...

  3. 有福了,J2EE面试题集锦(附答案)

    一.基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math  ...

  4. J2EE的13种核心技术规范

    J2EE主要用于创建可扩展的企业应用,包括13种核心技术规范: 1. JDBC(Java Database Connectivity,Java数据库连接) JDBC以一种统一的方式对各种各样的数据库进 ...

  5. J2EE面试题集锦(附答案)

    转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案) 一.基础问答 1.下面哪些类可以被继承? java.lan ...

  6. 揭开J2EE集群的神秘面纱(一):什么是J2EE集群

    揭开J2EE集群的神秘面纱(一):什么是J2EE集群 作者:不详 来源:CSDN博客 酷勤网收集 2008-04-18 摘要 酷勤网 J2EE集群技术包括负载均衡和失效转移.负载均衡意味着有许多客户端 ...

  7. J2EE的十三个规范

    J2EE想必大家都不陌生吧,貌似现在更流行将其称作JavaEE,不管名字怎么变,核心和思想是没有变的.学习J2EE首先要了解它的规范,下面我们一起看看它的十三个规范. 1,JDBC(Java Data ...

  8. 当前流行的J2EE WEB应用架构分析

    架构概述 J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术.这些技术的出现给电子商务时代的WEB ...

  9. activeMQ Jms Demo

    概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经 ...

  10. J2EE的13种核心技术

    Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...

最新文章

  1. 使用系统调用pipe建立一条管道线_【Linux系统】Linux进程间通信
  2. ManicTime软件破解
  3. SQL Server脏读方式数据提取---NOLOCK和READPAST
  4. Java笔记3:Eclipse添加jar包
  5. mysql8.0 创建用户并授权
  6. POJ 3279 Fliptile
  7. 制造车间怎么推行5S管理?
  8. 移动端 web 开发的设计稿与工作流
  9. 《财务共享服务》读书笔记
  10. vue配置代理服务器proxy
  11. 高校实验室设备预约管理系统
  12. Contiki学习——HelloWorld
  13. LDAP基础:3:通过389端口对openldap进行操作
  14. c51语言中数据的存储类型,C51-数据存储类型
  15. Centos7下mysql安装详解
  16. java系统类的名称_获取准确的操作系统名称的Java工具类
  17. 胡晓明:计算,探索未知的价值
  18. 互融云工业品电商系统开发整体解决方案 助力行业数字信息化发展
  19. 苹果的Retina技术 视网膜支持的应用
  20. php 判断键值重复合并,php数组实现根据某个键值将相同键值合并生成新二维数组的方法...

热门文章

  1. concepts in Turbulent Flow
  2. Fifth 补充堆空间的阐述,结构体的运用和复合体的简单描述
  3. 往年计算机一级试题,回顾!往年计算机一级试题及答案解析(3)
  4. 数学建模MATLAB代码知识点集合
  5. 微信小程序开发的开发模式有哪些?
  6. 高德地图获取行政区域以及中心点
  7. Trunk链路的配置
  8. Nginx代理https接口
  9. 计算机教师帮带情况,教师帮带工作总结
  10. 写文章、改句子、文章生成、AI生成器网址汇总