`
longgangbai
  • 浏览: 7349521 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于Tomcat容器的ActiveMQ简单实例

阅读更多
      在tomcat中配置ConnectionFactory和ActiveMQQueue,通过JNDI方式实现ActiveMQ。因为JNDI配置在
tomcat容器中所以必须通过jsp访问tomcat容器。

首先在在tomcat的lib目录添加如下jar文件。

<classpathentry kind="lib" path="src/activemq-all-5.5.0.jar"/>
	<classpathentry kind="lib" path="src/slf4j-api-1.5.2-sources.jar"/>
	<classpathentry kind="lib" path="src/slf4j-api-1.5.2.jar"/>
	<classpathentry kind="lib" path="src/slf4j-simple-1.5.2.jar"/>
	<classpathentry kind="lib" path="src/log4j-1.2.8.jar"/>
	<classpathentry kind="lib" path="src/commons-dbcp-1.4.jar"/>
	<classpathentry kind="lib" path="src/commons-pool-1.5.4.jar"/>
	<classpathentry kind="lib" path="src/commons-collections-3.2.1.jar"/>
	<classpathentry kind="lib" path="src/xbean-server-3.3.jar"/>

 

在Tomcat的conf目录下的context.xml配置中添加如下:

<Resource name="jms/ConnectionFactory"  
				auth="Container"  
				type="org.apache.activemq.ActiveMQConnectionFactory"
				description="JMS Connection Factory"
				factory="org.apache.activemq.jndi.JNDIReferenceFactory"
				brokerURL="tcp://localhost:61616"
				brokerName="LocalActiveMQBroker" />
				
	<Resource name="jms/Queue"  
				auth="Container"  
				type="org.apache.activemq.command.ActiveMQQueue"
				description="My Queue"
				factory="org.apache.activemq.jndi.JNDIReferenceFactory"
				physicalName="TomcatQueue" />	

 配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
   
    http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<!-- START SNIPPET: xbean -->
<beans 
  xmlns="http://www.springframework.org/schema/beans" 
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
  <!-- 连接连接工厂 -->
 <bean  id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName" value="java:comp/env/jms/ConnectionFactory"></property>
 </bean>
 
 
 <bean  id="tomcatQueue" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName" value="java:comp/env/jms/Queue"></property>
 </bean>

 <!-- 配置JMS的模板 -->
<bean id="jmsTemplate"  class="org.springframework.jms.core.JmsTemplate">
   <property name="connectionFactory" >
     <ref  bean="jmsConnectionFactory"/>
   </property>
   <property name="defaultDestination">
      <ref bean="tomcatQueue"/>
   </property>
</bean>


<!-- 发送消息队列到目的地 -->
<bean id="sender"  class="easyway.activemq.app.demo2.MessageSender">
    <property name="jmsTemplate">
       <ref bean="jmsTemplate"/>
    </property>
</bean>
<!-- 接收消息 -->
<bean id="receiver" class="easyway.activemq.app.demo2.MessageReceiver">
    <property name="jmsTemplate">
       <ref bean="jmsTemplate"/>
    </property>
</bean>


<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
   <property name="connectionFactory">
      <ref bean="jmsConnectionFactory"/>
   </property>
   <property name="destination">
      <ref bean="tomcatQueue"/>
   </property>
   <property name="messageListener">
      <ref bean="receiver"/>
    </property>
</bean>

</beans>

 

代码如下:

package easyway.activemq.app.demo2;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

/**
 * tomcat和activemq整合
 * 消息发送者
 * @author longgangbai
 *
 */
public class MessageSender {
  private JmsTemplate jmsTemplate;
  
  
  public void send(final String text){
	  jmsTemplate.send(new MessageCreator(){

		public Message createMessage(Session session) throws JMSException {
			// TODO Auto-generated method stub
			return session.createTextMessage(text);
		}
	  });
  }


	public JmsTemplate getJmsTemplate() {
		return jmsTemplate;
	}
	
	
	public void setJmsTemplate(JmsTemplate jmsTemplate) {
		this.jmsTemplate = jmsTemplate;
	}
}

 

package easyway.activemq.app.demo2;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.springframework.jms.core.JmsTemplate;
/**
 * 消息接收者
 * @author longgangbai
 *
 */
public class MessageReceiver implements  MessageListener {
	private JmsTemplate jmsTemplate;
	  
	public JmsTemplate getJmsTemplate() {
		return jmsTemplate;
	}

	public void setJmsTemplate(JmsTemplate jmsTemplate) {
		this.jmsTemplate = jmsTemplate;
	}
    public void receive() throws JMSException{
    	 TextMessage text=(TextMessage)this.jmsTemplate.receive();
		System.out.println("receive="+text.getText());
    }
	public void onMessage(Message message) {
		 if(message instanceof TextMessage){
			 TextMessage text=(TextMessage)message;
			 try {
				System.out.println(text.getText());
			} catch (Exception e) {
			}
		 }
	}
    
}

 

package easyway.activemq.app.demo2;

import javax.jms.JMSException;

import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
/**
 * 测试类
 * @author longgangbai
 *
 */
public class MessageTest {
	public void test() throws JMSException {
		ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("app-activemq-tomcat.xml");
		MessageSender sender=(MessageSender)ctx.getBean("sender");
		MessageReceiver receive=(MessageReceiver)ctx.getBean("receiver");
		sender.send("helloworld");
		receive.receive();
	}

}

 index.jsp内容:

<%@ page language="java" import="easyway.activemq.app.demo2.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  
    <%
        MessageTest message=new MessageTest();
        message.test();
     %>
  <br>
  </body>
</html>

 

分享到:
评论
3 楼 longgangbai 2011-10-13  
learninger 写道
你好 请问你说的tomcat容器中所以必须通过jsp访问tomcat容器是什么意思呢?
因为在activemq官网上有介绍可以用ajax来传送消息,请问你知道这个是怎么实现的吗?

至于你说的Ajax发送消息是ajax调用activemq的js版本实现的,在网上查一下,官方有文档
2 楼 longgangbai 2011-10-08  
在activemq官网上有介绍可以用ajax来传送消息,请问你知道这个是怎么实现的吗?
learninger 写道
你好 请问你说的tomcat容器中所以必须通过jsp访问tomcat容器是什么意思呢?
因为在activemq官网上有介绍可以用ajax来传送消息,请问你知道这个是怎么实现的吗?

你看一下xml配置
<bean  id="tomcatQueue" class="org.springframework.jndi.JndiObjectFactoryBean">  
     <property name="jndiName" value="java:comp/env/jms/Queue"></property>  
</bean>  
中JNDI依赖于tomcat容器信息.
1 楼 learninger 2011-10-01  
你好 请问你说的tomcat容器中所以必须通过jsp访问tomcat容器是什么意思呢?
因为在activemq官网上有介绍可以用ajax来传送消息,请问你知道这个是怎么实现的吗?

相关推荐

    JDK+Tomcat+ActiveMQ安装环境配置详细说明

    2. **在MyEclipse中配置Tomcat**:如果你使用MyEclipse作为开发工具,可以在`Windows—Preferences—MyEclipse—Servers—Tomcat`中添加Tomcat的安装路径,并勾选"Enable",使其成为可用的服务器实例。 3. **测试...

    activemq与tomcat整合

    在IT行业中,集成不同的组件是常见的需求,特别是对于企业级应用服务器如Tomcat和消息中间件如ActiveMQ。本篇将详细介绍如何将ActiveMQ与Tomcat进行整合,以便在Web应用程序中利用ActiveMQ的消息传递功能。 首先,...

    ActiveMq-JMS简单实例使用tomcat.pdf

    【ActiveMQ-JMS简单实例使用Tomcat】是一个关于如何在Tomcat环境下集成并使用ActiveMQ进行JMS消息传递的初级教程。ActiveMQ是一款开源的消息中间件,它遵循JMS(Java Message Service)1.1规范,能兼容J2EE1.4及以上...

    ActiveMq-JMS简单实例使用tomcat.doc

    在本文中,我们将探讨如何在Tomcat服务器上设置和使用ActiveMQ的简单实例。 **一、ActiveMQ的特点与优势** 1. **遵循JMS1.1规范**,兼容J2EE1.4及以上版本。 2. **跨平台**,可以在任何JVM和大多数Web容器中运行,...

    JMS教程+activemq以及activemq和tomcat的整合

    Tomcat是一款流行的开源Java Servlet容器,常用于部署Web应用。要将ActiveMQ与Tomcat整合,你需要完成以下步骤: 1. **下载和安装ActiveMQ**: 获取ActiveMQ的最新版本,并解压到合适的位置。 2. **配置ActiveMQ**: ...

    Spring和ActiveMQ的整合实例源码

    5. **消息消费者(Consumer)**:Spring提供两种消费消息的方式:基于监听器的容器和基于回调的方法。前者通过实现`MessageListener`接口并在`@JmsListener`注解的回调方法中处理消息。后者则使用`JmsTemplate`的`...

    spring2 activemq5 tomcat6构建jms

    在构建基于Spring和ActiveMQ的应用时,Tomcat可以作为部署环境,承载应用的Web容器部分。 构建JMS系统通常涉及到以下步骤: 1. **配置Spring**: 首先,在Spring的配置文件(如`applicationContext.xml`)中定义JMS...

    ActiveMq-JMS好用实例详解

    不论是在何种Java虚拟机环境中,ActiveMQ 都能正常运行,并且它还能够在大部分主流的Web容器中无缝集成,如Tomcat、Jetty等,这极大地提高了它的部署灵活性。 3. **支持多种语言客户端** 除了Java之外,ActiveMQ...

    Spring集成ActiveMQ配置

    6. **Missian ActiveMQ-JMS简单实例**:这可能是一个具体的项目实例,它展示了如何在Spring应用中使用ActiveMQ实现异步RPC(远程过程调用)。在这种模式下,一个服务通过消息将请求发送到队列,另一端的服务监听队列...

    Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo.zip

    7. **部署环境**:项目基于Tomcat服务器运行,这是Spring MVC应用的常见选择。在实际部署中,需要将打包后的WAR文件部署到Tomcat的webapps目录下。 通过这个实例,开发者可以学习如何在Spring环境中设置和使用...

    activemq整合spring完整实例代码(内含所有相关jar包)

    这个实例代码是将ActiveMQ与Spring进行整合的一个实际项目,可以在Tomcat服务器上运行。由于提供了所有必要的jar包,所以无需额外下载,直接解压后部署到Tomcat即可。这表明该实例考虑到了用户友好性和易用性,避免...

    ActiveMQ快速上手 PDF

    - **集成 ActiveMQ 和 Tomcat**:将 ActiveMQ 集成到 Tomcat 容器中,便于部署。 - **什么时候使用 ActiveMQ**:分析在哪些场景下使用 ActiveMQ 最为合适。 #### 十四、ActiveMQ优化 - **影响 ActiveMQ 性能的因素*...

    apache-activemq-5.15.2下的demo

    - 要运行这些示例,你需要先启动ActiveMQ服务器,然后将`webapps-demo`目录部署到ActiveMQ的web容器中,如Tomcat。 - 访问部署后的Web应用,按照界面提示进行操作,即可体验各种功能。 6. **最佳实践**: - 在...

    spring jms tomcat 异步消息传递入门实例

    2. **Tomcat与JMS**:虽然Tomcat本身并不直接支持JMS,但可以在Tomcat中部署一个支持JMS的容器,如Apache ActiveMQ或IBM WebSphere MQ。这些服务器将作为消息代理,接收和分发消息。在Tomcat中配置JMS,需要在`...

    SpringMVC+Hibernate+ActiveMQ+爬虫

    在构建一个基于SpringMVC+Hibernate+ActiveMQ的分布式小说爬虫系统时,我们需要了解这些技术的核心特性和如何将它们整合在一起。以下是关于这些技术及其在项目中的应用的详细解释: 1. **SpringMVC**:SpringMVC是...

    activemqdemo

    【标题】"activemqdemo" 是一个基于Apache ActiveMQ的简单示例,它展示了如何在Java环境中使用ActiveMQ来发送和接收消息。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了Java消息服务(JMS)规范,...

    solr_Tomcat_lib包

    在搭建Solr环境时,`solr_Tomcat_lib`包扮演了关键角色,因为它是Solr在Tomcat容器中运行所需的库文件集合。 首先,让我们详细了解`lib`目录。这个目录通常包含Solr运行所必需的各种JAR文件,这些文件主要分为以下...

    spring-activeMQ-demo:spring-activeMQ-演示

    在"spring-activeMQ-demo"中,我们可以看到如何设置消息生产者(发送消息)和消费者(接收消息)的代码实例,以及如何在Spring环境中启动和关闭ActiveMQ连接。这个例子是学习和理解Spring与ActiveMQ整合的绝佳起点,...

    comet demo 向客户端推送例子

    这个"comet demo"是一个展示如何在Java环境下利用Tomcat服务器实现Comet技术的实例。Tomcat 6.0是Apache软件基金会开发的开源Servlet容器,支持各种Java Web应用的部署,包括Comet技术。 首先,Comet的核心在于保持...

    Container.pdf

    - 轻量级:容器共享操作系统内核,不需要每个实例都运行一个完整的操作系统,因此占用的系统资源远少于虚拟机。 - 端口复用:容器可以绑定到特定端口,并且不同的容器可以绑定到相同的端口,这通常通过端口映射...

Global site tag (gtag.js) - Google Analytics