jboss jms 实例
1.下载Jboss 7并配置运行环境 http://www.jboss.org/jbossas/downloads 
2.增加testjms用户(用以jms链接时使用),在jboss的bin目录下运行add-user.bat,如下: guest 一定要写。 
 
3.修改启动配置文件,使用standalone-full.xml启动jboss服务器
- $JBOSS_HOME$\bin>standalone.bat --server-config=standalone-full.xml
 

4.例子:修改Jboss配置文件standalone-full.xml,找到hornetq-server节点,在该节点下的jms-destinations确定含有以下配置:
- <jms-destinations>
 - <jms-queue name="testQueue">
 - <entry name="queue/test"/>
 - <entry name="java:jboss/exported/jms/queue/test"/>
 - </jms-queue>
 - <jms-topic name="ServerNotificationTopic">
 - <entry name="topic/ServerNotification"/>
 - <entry name="java:jboss/exported/jms/topic/ServerNotification"/>
 - </jms-topic>
 - </jms-destinations>
 
客户端项目用eclipse集成jboss的 j2ee项目。runtime是jboss 7.
 public Object Receive(String filter, long timeoutReceive) throws JMSException {
        System.out.println ("======enter Receive===" );
        System.out.println("Creating cosumer with filter: " + filter );
        MessageConsumer consumer = queuesession.createConsumer(queue, filter);
        Message mrcv = null;
        System.out.println("receive message with timeout="+timeoutReceive);
        mrcv = consumer.receive(timeoutReceive);
        if (mrcv != null) {
            try {
                System.out.println("RCV1: " + mrcv.getJMSCorrelationID());
                System.out.println("====== consumer.close();.=====");
                consumer.close();
                return ((ObjectMessage) mrcv).getObject();;
            } catch (MessageFormatException e) {
                System.out.println("MessageFormatException: " + e.getMessage());
                mrcv.acknowledge();
            }
        } else {
            System.out.println("======receive message time out.=====");
        }
        consumer.close();
        return null;
    }
- package org.jboss.as.quickstarts.jms;
 - import java.util.concurrent.CountDownLatch;
 - import java.util.concurrent.TimeUnit;
 - import java.util.logging.Logger;
 - import java.util.Properties;
 - import javax.jms.Connection;
 - import javax.jms.ConnectionFactory;
 - import javax.jms.Destination;
 - import javax.jms.MessageConsumer;
 - import javax.jms.MessageProducer;
 - import javax.jms.Session;
 - import javax.jms.TextMessage;
 - import javax.naming.Context;
 - import javax.naming.InitialContext;
 - public class JMSProducer {
 - private static final Logger log = Logger.getLogger(JMSProducer.class.getName());
 - // Set up all the default values
 - private static final String DEFAULT_MESSAGE = "Hello, World!";
 - private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory";
 - private static final String DEFAULT_DESTINATION = "jms/queue/test";
 - private static final String DEFAULT_MESSAGE_COUNT = "1";
 - private static final String DEFAULT_USERNAME = "testjms";
 - private static final String DEFAULT_PASSWORD = "123456";
 - private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";
 - private static final String PROVIDER_URL = "remote://localhost:4447";
 - public static void main(String[] args) throws Exception {
 - ConnectionFactory connectionFactory = null;
 - Connection connection = null;
 - Session session = null;
 - MessageProducer producer = null;
 - Destination destination = null;
 - TextMessage message = null;
 - Context context = null;
 - try {
 - // Set up the context for the JNDI lookup
 - final Properties env = new Properties();
 - env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
 - env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL));
 - env.put(Context.SECURITY_PRINCIPAL, System.getProperty("username", DEFAULT_USERNAME));
 - env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password", DEFAULT_PASSWORD));
 - context = new InitialContext(env);
 - // Perform the JNDI lookups
 - String connectionFactoryString = System.getProperty("connection.factory", DEFAULT_CONNECTION_FACTORY);
 - log.info("Attempting to acquire connection factory \"" + connectionFactoryString + "\"");
 - connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryString);
 - log.info("Found connection factory \"" + connectionFactoryString + "\" in JNDI");
 - String destinationString = System.getProperty("destination", DEFAULT_DESTINATION);
 - log.info("Attempting to acquire destination \"" + destinationString + "\"");
 - destination = (Destination) context.lookup(destinationString);
 - log.info("Found destination \"" + destinationString + "\" in JNDI");
 - // Create the JMS connection, session, producer, and consumer
 - connection = connectionFactory.createConnection(System.getProperty("username", DEFAULT_USERNAME), System.getProperty("password", DEFAULT_PASSWORD));
 - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 - producer = session.createProducer(destination);
 - connection.start();
 - int count = Integer.parseInt(System.getProperty("message.count", DEFAULT_MESSAGE_COUNT));
 - String content = System.getProperty("message.content", DEFAULT_MESSAGE);
 - log.info("Sending " + count + " messages with content: " + content);
 - // Send the specified number of messages
 - for (int i = 0; i < count; i++) {
 - message = session.createTextMessage(content);
 - producer.send(message);
 - }
 - //等待30秒退出
 - CountDownLatch latch = new CountDownLatch(1);
 - latch.await(30, TimeUnit.SECONDS);
 - } catch (Exception e) {
 - log.severe(e.getMessage());
 - throw e;
 - } finally {
 - if (context != null) {
 - context.close();
 - }
 - // closing the connection takes care of the session, producer, and consumer
 - if (connection != null) {
 - connection.close();
 - }
 - }
 - }
 - }
 

- package org.jboss.as.quickstarts.jms;
 - import java.util.concurrent.CountDownLatch;
 - import java.util.concurrent.TimeUnit;
 - import java.util.logging.Logger;
 - import java.util.Properties;
 - import javax.jms.Connection;
 - import javax.jms.ConnectionFactory;
 - import javax.jms.Destination;
 - import javax.jms.MessageConsumer;
 - import javax.jms.MessageProducer;
 - import javax.jms.Session;
 - import javax.jms.TextMessage;
 - import javax.naming.Context;
 - import javax.naming.InitialContext;
 - public class JMSConsumer {
 - private static final Logger log = Logger.getLogger(JMSConsumer.class.getName());
 - // Set up all the default values
 - private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory";
 - private static final String DEFAULT_DESTINATION = "jms/queue/test";
 - private static final String DEFAULT_USERNAME = "testjms";
 - private static final String DEFAULT_PASSWORD = "123456";
 - private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";
 - private static final String PROVIDER_URL = "remote://localhost:4447";
 - public static void main(String[] args) throws Exception {
 - ConnectionFactory connectionFactory = null;
 - Connection connection = null;
 - Session session = null;
 - MessageConsumer consumer = null;
 - Destination destination = null;
 - TextMessage message = null;
 - Context context = null;
 - try {
 - // Set up the context for the JNDI lookup
 - final Properties env = new Properties();
 - env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
 - env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL));
 - env.put(Context.SECURITY_PRINCIPAL, System.getProperty("username", DEFAULT_USERNAME));
 - env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password", DEFAULT_PASSWORD));
 - context = new InitialContext(env);
 - // Perform the JNDI lookups
 - String connectionFactoryString = System.getProperty("connection.factory", DEFAULT_CONNECTION_FACTORY);
 - log.info("Attempting to acquire connection factory \"" + connectionFactoryString + "\"");
 - connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryString);
 - log.info("Found connection factory \"" + connectionFactoryString + "\" in JNDI");
 - String destinationString = System.getProperty("destination", DEFAULT_DESTINATION);
 - log.info("Attempting to acquire destination \"" + destinationString + "\"");
 - destination = (Destination) context.lookup(destinationString);
 - log.info("Found destination \"" + destinationString + "\" in JNDI");
 - // Create the JMS connection, session, producer, and consumer
 - connection = connectionFactory.createConnection(System.getProperty("username", DEFAULT_USERNAME), System.getProperty("password", DEFAULT_PASSWORD));
 - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 - consumer = session.createConsumer(destination);
 - connection.start();
 - //等待30秒退出
 - CountDownLatch latch = new CountDownLatch(1);
 - // Then receive the same number of messaes that were sent
 - while(message == null) {
 - log.info("----receive message");
 - message = (TextMessage) consumer.receive(5000);
 - latch.await(1, TimeUnit.SECONDS);
 - }
 - log.info("====Received message with content " + message.getText());
 - } catch (Exception e) {
 - log.severe(e.getMessage());
 - throw e;
 - } finally {
 - if (context != null) {
 - context.close();
 - }
 - // closing the connection takes care of the session, producer, and consumer
 - if (connection != null) {
 - connection.close();
 - }
 - }
 - }
 - }
 

Pub/Sub demo
- package com.lym.jms;
 - import java.io.BufferedReader;
 - import java.io.IOException;
 - import java.io.InputStreamReader;
 - import java.util.Properties;
 - import javax.jms.Destination;
 - import javax.jms.JMSException;
 - import javax.jms.Session;
 - import javax.jms.TextMessage;
 - import javax.naming.Context;
 - import javax.naming.InitialContext;
 - import javax.naming.NamingException;
 - public class JMSPub {
 - private static final String DEFAULT_USERNAME = "testjms";
 - private static final String DEFAULT_PASSWORD = "123456";
 - private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";
 - private static final String PROVIDER_URL = "remote://localhost:4447";
 - /**
 - * @param args
 - * @throws NamingException
 - * @throws JMSException
 - * @throws IOException
 - */
 - public static void main(String[] args) throws NamingException, JMSException, IOException {
 - final Properties env = new Properties();
 - env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
 - env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL));
 - env.put(Context.SECURITY_PRINCIPAL, System.getProperty("username", DEFAULT_USERNAME));
 - env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password", DEFAULT_PASSWORD));
 - InitialContext context = new InitialContext(env);
 - // 1) lookup connection factory (local JNDI lookup, no credentials required)
 - javax.jms.ConnectionFactory cf = (javax.jms.ConnectionFactory)context.lookup("jms/RemoteConnectionFactory");
 - // 2) create a connection to the remote provider
 - javax.jms.Connection connection = cf.createConnection(DEFAULT_USERNAME, DEFAULT_PASSWORD);
 - // 3) create session session
 - boolean transacted = false;
 - javax.jms.Session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
 - /**
 - * 在standalone-full.xml中找到
 - * <subsystem xmlns="urn:jboss:domain:messaging:1.1">
 - * 节点下找到<jms-destinations>节点,增加
 - * <jms-topic name="ServerNotificationTopic">
 - <entry name="topic/ServerNotification"/>
 - <entry name="java:jboss/exported/jms/topic/ServerNotification"/>
 - </jms-topic>
 - */
 - // 4) "create" the queue/topic (using the topic name - not JNDI)
 - //javax.jms.Topic topic = session.createTopic("ServerNotificationTopic");
 - javax.jms.Topic topic = (javax.jms.Topic)context.lookup("jms/topic/ServerNotification");
 - // 5) create producer
 - //javax.jms.MessageProducer producer = session.createProducer(topic);
 - Destination destination = (Destination) context.lookup("jms/topic/ServerNotification");
 - javax.jms.MessageProducer producer = session.createProducer(destination);
 - BufferedReader msgStream = new BufferedReader(new InputStreamReader(
 - System.in));
 - String line = null;
 - boolean quitNow = false;
 - do {
 - System.out.print("Enter message (\"quit\" to quit): ");
 - line = msgStream.readLine();
 - if (line != null && line.trim().length() != 0) {
 - // 6) create message
 - TextMessage textMessage = session.createTextMessage();
 - textMessage.setText(line);
 - // 7) send message
 - producer.send(textMessage);
 - quitNow = line.equalsIgnoreCase("quit");
 - }
 - } while (!quitNow);
 - }
 - }
 

- package com.lym.jms;
 - import java.util.Properties;
 - import java.util.concurrent.CountDownLatch;
 - import java.util.concurrent.TimeUnit;
 - import javax.jms.JMSException;
 - import javax.jms.Session;
 - import javax.jms.TextMessage;
 - import javax.naming.Context;
 - import javax.naming.InitialContext;
 - import javax.naming.NamingException;
 - public class JMSSub {
 - private static final String DEFAULT_USERNAME = "testjms";
 - private static final String DEFAULT_PASSWORD = "123456";
 - private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";
 - private static final String PROVIDER_URL = "remote://localhost:4447";
 - /**
 - * @param args
 - * @throws NamingException
 - * @throws JMSException
 - * @throws InterruptedException
 - */
 - public static void main(String[] args) throws NamingException, JMSException, InterruptedException {
 - final Properties env = new Properties();
 - env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
 - env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL));
 - env.put(Context.SECURITY_PRINCIPAL, System.getProperty("username", DEFAULT_USERNAME));
 - env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password", DEFAULT_PASSWORD));
 - InitialContext context = new InitialContext(env);
 - // javax.jms.Topic topic = (javax.jms.Topic)context.lookup("jms/topic/ServerNotification");
 - // 1) lookup connection factory (local JNDI lookup, no credentials required)
 - javax.jms.ConnectionFactory cf = (javax.jms.ConnectionFactory)context.lookup("jms/RemoteConnectionFactory");
 - // 2) create a connection to the remote provider
 - javax.jms.Connection connection = cf.createConnection(DEFAULT_USERNAME, DEFAULT_PASSWORD);
 - // 3) create session session
 - boolean transacted = false;
 - javax.jms.Session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
 - // 4) "create" the queue/topic (using the topic name - not JNDI)
 - javax.jms.Topic topic = session.createTopic("ServerNotificationTopic");
 - // 5) create consumer
 - javax.jms.MessageConsumer consumer = session.createConsumer(topic); // messageSelector is optional
 - // 6) set listener
 - consumer.setMessageListener(new javax.jms.MessageListener() {
 - public void onMessage(javax.jms.Message message)
 - {
 - try {
 - TextMessage tm = (TextMessage)message;
 - System.out.println("received message content: "+tm.getText().toString());
 - System.out.println("getJMSDestination: "+tm.getJMSDestination());
 - System.out.println("getJMSReplyTo: "+tm.getJMSReplyTo());
 - System.out.println("getJMSMessageID: "+tm.getJMSMessageID());
 - System.out.println("getJMSRedelivered: "+tm.getJMSRedelivered());
 - } catch (JMSException e) {
 - // TODO Auto-generated catch block
 - e.printStackTrace();
 - }
 - }
 - });
 - // 7) listen for messages (start the connection)
 - connection.start();
 - //等待30秒退出
 - CountDownLatch latch = new CountDownLatch(1);
 - latch.await(30, TimeUnit.SECONDS);
 - }
 - }
 

jboss jms 实例的更多相关文章
- ActionMQ5.8.0 JMS实例 手把手详细图解
		
出自:http://blog.csdn.net/tongjie008/article/details/40687087 ActionMQ 是开源的JMS实现 1.下载ActiveMQ 去官方网站下载: ...
 - 一台机器运行多个JBoss多实例
		
JBossXMLJVMTomcat应用服务器 我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关 ...
 - 配置JBOSS多实例
		
在使用Jbossserver时.非常多情况我们须要配置多个实例,以下为大家介绍JBoss里怎样配置多实例,以Jboss5.1为例介绍. 1.复制${JBOSS_HOME}\server\default ...
 - 简单的JMS实例
		
1.首先需要一台JMS的提供者,在这里我选择使用的是apache-activemq-5.3.2这个服务器,首先下载服务器并通过bin目录下的activemq.bat启动服务器,此时可通过http:// ...
 - 通过spring整合activeMQ实现jms实例
		
写的很详细 http://blog.csdn.net/leonardo9029/article/details/43154385
 - Jboss ESB简介及开发实例
		
一.Jboss ESB的简介 1. 什么是ESB. ESB的全称是Enterprise Service Bus,即企业服务总线.ESB是过去消息中间件的发展,ESB采用了“总线”这样一 ...
 - Linux下关闭JBoss实例
		
本文内容: 查看JBoss运行实例 #ps -ef|grep java 上图就是运行结果(部分结果),其中一个服务器上可能会运行多个JBOSS server实例,找到你需要看的那个. 其中 ps -e ...
 - JBoss EAP应用服务器部署方法和JBoss 开发JMS消息服务小例子
		
一.download JBoss-EAP-6.2.0GA: http://jbossas.jboss.org/downloads JBoss Enterprise Application Platfo ...
 - ActiveMQ学习总结(5)——Java消息服务JMS详解
		
JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业消息系统可以协助应用软件通过网络进行消息交互. JMS的编程过程很简单,概 ...
 
随机推荐
- 虚拟机开机提示Operating System not found解决办法
			
为了更好体验windows更多操作系统,有些用户会在VMware虚拟机中安装XP.win7或win8等等系统,有用户反映在虚拟机中安装XP开机后提示"Operating System not ...
 - MyBatis学习--逆向工程
			
简介 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po..).企业实际 ...
 - 让apache后端显示真实客户端IP
			
公司是nginx做代理,后端的web服务用的是apache,然后我现在要分析日志,但是,我的apache日志上显示的是代理服务器的ip地址,不是客户的真实IP 所以这里我需要修改一下,让apache的 ...
 - java中的hashSet和Treeset的分析
			
hashset中的元素 treeset中的元素要实现comparable接口
 - Edge Linking
			
因为噪声的存在, 检测出来的edge points有很多都是不相邻的. 所以边缘检测算法通常都有最后的连接步骤: 将属于同一edge的不相邻点连接起来(TODO, 是用一条路径将它们连通, 把路径中的 ...
 - CGCDSSQ
			
这道题很妙啊.其实我们可以发现重要的不是起点和终点,重要的是个数,然后脑洞一下,可以递推.(我什么都没有想出来)假设我们已经知道了前面所有子串的gcd,那么我们可以用现在的a[i]和前面每个数求gcd ...
 - 北京Java培训机构哪个好
			
又是一年暑期生活的来临,对于即将走出校园的实习生而言,培训潮与就业潮不约而至,培训行业的就业课程开班也如火如荼地进行着. 一直以来,计算机专业的毕业生都会作为一股庞大的生力军涌入社会各个岗位.就目前的 ...
 - HTTP/2.0与HTTP/1.1协议区别
			
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议.设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.通 ...
 - Spring10种常见异常解决方法
			
在程序员生涯当中,提到最多的应该就是SSH三大框架了.作为第一大框架的Spring框架,我们经常使用. 然而在使用过程中,遇到过很多的常见异常,我在这里总结一下,大家共勉. 一.找不到配置文件的异常 ...
 - Java反序列化测试
			
前言:有没有想过,如何将对象进行“加密”后写入磁盘?序列化帮你实现! 1.概念 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写 ...