IT忍者神龟之基于Tomcat容器的ActiveMQ简单实例
来源:互联网 发布:数据库开发学什么 编辑:程序博客网 时间:2024/06/06 22:25
- 在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>
1.Active MQ安装配置
1.1.下载并解压Active MQ
1.2.双击bin/activemq.bat启动Active MQ
1.3.浏览器输入http://localhost:8161/admin/ ,可以图形化界面管理activemq
1.4.点击Queue,新建一个队列名字叫TestQueue1
2.在Eclipse里面配置Tomcat的context.xml,这样Spring就能以JNDI方式访问ActiveMQ了
加入以下代码
3.导入以下Jar包
activemq-all-5.4.1.jar
commons-logging-1.1.1.jar
javax.jms_1.1.1.jar
spring.asm-3.0.0.RELEASE.jar
spring.beans-3.0.0.RELEASE.jar
spring.context-3.0.0.RELEASE.jar
spring.core-3.0.0.RELEASE.jar
spring.expression-3.0.0.RELEASE.jar
spring.jms-3.0.0.RELEASE.jar
spring.transaction-3.0.0.RELEASE.jar
spring.web-3.0.0.RELEASE.jar
4.编写2个类,一个MessageQueueSender发消息,一个MessageQueueReceiver收消息,为了方便测试,我们还写了一个Servlet调用MessageQueueSender,通过JSP来调用Servlet
5.写Spring的配置文件,假设存在这个文件里:jms-activemq.xml
6.启动tomcat测试看效果
6.1.浏览器输入http://localhost:8080/JMSTest/,随便输入消息比如"Hello",点击submit
6.2.可在控制台看到Hello的信息,表明发送和接受者都已经OK
6.3.还可以在ActiveMQ管理台创建一条消息,点击"Send To"
随便打入一点消息
6.4.可在控制台看到接受者能收到此消息
1.1.下载并解压Active MQ
1.2.双击bin/activemq.bat启动Active MQ
1.3.浏览器输入http://localhost:8161/admin/ ,可以图形化界面管理activemq
1.4.点击Queue,新建一个队列名字叫TestQueue1
2.在Eclipse里面配置Tomcat的context.xml,这样Spring就能以JNDI方式访问ActiveMQ了
加入以下代码
- <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="TestQueue1" />
3.导入以下Jar包
activemq-all-5.4.1.jar
commons-logging-1.1.1.jar
javax.jms_1.1.1.jar
spring.asm-3.0.0.RELEASE.jar
spring.beans-3.0.0.RELEASE.jar
spring.context-3.0.0.RELEASE.jar
spring.core-3.0.0.RELEASE.jar
spring.expression-3.0.0.RELEASE.jar
spring.jms-3.0.0.RELEASE.jar
spring.transaction-3.0.0.RELEASE.jar
spring.web-3.0.0.RELEASE.jar
4.编写2个类,一个MessageQueueSender发消息,一个MessageQueueReceiver收消息,为了方便测试,我们还写了一个Servlet调用MessageQueueSender,通过JSP来调用Servlet
5.写Spring的配置文件,假设存在这个文件里:jms-activemq.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
- 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-3.0.xsd">
- <!-- Connection factory -->
- <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName" value="java:comp/env/jms/ConnectionFactory"></property>
- </bean>
- <!-- Queue -->
- <bean id="jmsQueue" class="org.springframework.jndi.JndiObjectFactoryBean"
- lazy-init="true">
- <property name="jndiName" value="java:comp/env/jms/Queue"></property>
- </bean>
- <!-- Spring JMS Template -->
- <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"
- lazy-init="true">
- <property name="connectionFactory" ref="jmsConnectionFactory"></property>
- <property name="defaultDestination" ref="jmsQueue"></property>
- </bean>
- <!-- Sender -->
- <bean id="jmsSender" class="com.xp.MessageQueueSender"
- lazy-init="true">
- <property name="jmsTemplate" ref="jmsTemplate"></property>
- </bean>
- <!-- Receiver -->
- <bean id="jmsReceiver" class="com.xp.MessageQueueReceiver">
- </bean>
- <!-- Message Listener -->
- <bean id="listenerContainer"
- class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="jmsConnectionFactory"></property>
- <property name="destination" ref="jmsQueue"></property>
- <property name="messageListener" ref="jmsReceiver"></property>
- <property name="autoStartup" value="true" />
- </bean>
- </beans>
6.启动tomcat测试看效果
6.1.浏览器输入http://localhost:8080/JMSTest/,随便输入消息比如"Hello",点击submit
6.2.可在控制台看到Hello的信息,表明发送和接受者都已经OK
6.3.还可以在ActiveMQ管理台创建一条消息,点击"Send To"
随便打入一点消息
6.4.可在控制台看到接受者能收到此消息
0 0
- IT忍者神龟之基于Tomcat容器的ActiveMQ简单实例
- 基于Tomcat容器的ActiveMQ简单实例
- 基于Tomcat容器的ActiveMQ简单实例
- IT忍者神龟之jquery zTree异步加载简单实例
- IT忍者神龟之基于cos.jar 的 图片上传
- IT忍者神龟之基于Java的全文检索引擎简介
- IT忍者神龟之MySQL数据库简单操作
- IT忍者神龟之oracle 集合的使用
- IT忍者神龟之Hibernate的HQL总结
- It忍者神龟之hibernate关联的实验
- IT忍者神龟之MysqlDATE_FORMAT函数的作用
- tomcat+JNDI+ActiveMQ简单实例
- IT忍者神龟之在Tomcat配置JNDI数据源的三种方式
- IT忍者神龟之基于cookie的WEB自动登陆功能设计和账户安全性
- IT忍者神龟之修改IE地址栏Tomcat 小猫咪图标
- IT忍者神龟之Tomcat部署Web应用方法阐述
- IT忍者神龟之Redis+Tomcat+Nginx集群实现Session共享
- IT忍者神龟之Filter介绍,执行顺序,实例
- java.lang.reflect.InvocationTargetException
- Morris Traversal: 非递归不用栈实现对树的中序遍历
- 不同浏览器多支持的按键事件,回车键(笔记)
- Three.js中的摄像机
- div+css兼容积累
- IT忍者神龟之基于Tomcat容器的ActiveMQ简单实例
- 求n!
- 同步适配器模式(三)
- jQuery+Ajax+PHP+Mysql实现分页显示数据
- 配置外部数据源(tomcat配置数据源)
- android 源码添加
- 开篇之环境搭建JDK+Maven+Eclipse常用配置,Tomcat的内存溢出解决
- 【译】在Tomat7上使用Redis保存Session
- 使用java concurrent调用xmlp api生成pdf