- 浏览: 7339059 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在ActiveMQ的资源让容器Tomcat管理时候,可以在Tomcat的配置文件中添加相关的配置信息。
1、准备jar包:
将ActiveMQ lib目录下的5个jar包复制到Tomcat lib目录下:
activemq-core-5.1.0.jar activemq-web-5.1.0.jar geronimo-j2ee-management_1.0_spec-1.0.jar geronimo-jms_1.1_spec-1.1.1.jar geronimo-jta_1.0.1B_spec-1.0.1.jar |
修改配置文件:
修改Tomcat的conf/context.xml文件:
在<context></context>节点中添加以下内容:
创建一个Java Web项目: 备注:必须是web项目,目前ActiveMQ依赖Tomcat,Tomcat是web容器,必须创建一个web容器。 消息接收者: <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" />
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 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 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(); } }
配置文件:
<?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>
创建一个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>
评论
项目启动时候创建mq已经启动。
你创建context时候没有传递相关的参数,如果传递参数同时必须添加相关的包。java.naming.factory.initial所在的jar文件。
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at code.test.main.MessageTest.<clinit>(MessageTest.java:18)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.junit.internal.runners.JUnit4ClassRunner.createTest(JUnit4ClassRunner.java:72)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:79)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:88)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:153)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:200)
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:186)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
... 32 more
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6610ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3514在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2906在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 47041. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4100我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2925在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5532在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2671在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5590在ActiveMQ中的activemq.b ... -
ActiveMQ 和Commons-Daemon整合
2011-07-07 20:13 2943在一般的java项目中,如果在linu ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6070无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5129在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2215在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10228在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2310ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2658在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6187最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25107配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ中关于文件锁的机制的学习
2011-06-14 23:31 3339在ActiveMQ中提供了文件数据库机 ... -
ActiveMQ的JMX监控使用
2011-06-10 17:26 13157package easyway.app.activemq.d ...
相关推荐
【ActiveMQ与Tomcat整合教程】是关于如何在Apache Tomcat服务器中集成开源消息中间件ActiveMQ的详细步骤。这个教程适用于Tomcat 6.0.14版本,但请注意不同版本可能存在配置上的差异。 首先,为了使Tomcat能够识别和...
整合ActiveMQ和Tomcat的好处在于,它允许Web应用程序利用ActiveMQ的强大功能,如发布/订阅模式和点对点模式的消息传递,以及高可用性和故障恢复能力。同时,由于ActiveMQ是独立于Tomcat运行的,因此可以与其他应用...
将ActiveMQ与Tomcat整合,可以让Tomcat应用利用消息队列实现更高效的通信,提高系统的可扩展性和可靠性。 **一、ActiveMQ简介** ActiveMQ的主要功能包括: 1. **消息队列**: 提供点对点和发布/订阅两种模式的消息...
要将ActiveMQ与Tomcat整合,你需要完成以下步骤: 1. **下载和安装ActiveMQ**: 获取ActiveMQ的最新版本,并解压到合适的位置。 2. **配置ActiveMQ**: 修改`conf.activemq.xml`配置文件,设置所需的参数,如端口、...
综上所述,本教程将详细讲解如何将 ActiveMQ 整合进基于 Spring+Struts+Hibernate(SSH)的 Java 应用程序中,以实现高并发的日志接收和处理能力。同时,结合 Webservice 和第三方报表工具,实现与不同系统之间的...
### Apache ActiveMQ与JMS整合Tomcat:深入解析与实践 #### 一、Apache ActiveMQ:强大而灵活的开源消息中间件 Apache ActiveMQ作为一款成熟的开源消息中间件,不仅遵循了JMS 1.1规范,还兼容J2EE 1.4以上的标准,...
总结来说,ActiveMQ和Tomcat的整合为企业级应用提供了强大的消息处理能力,有助于构建更灵活、可扩展的系统架构。在开发过程中,理解JMS规范、熟悉ActiveMQ的配置和管理、以及掌握如何在Tomcat中使用JMS资源是关键...
在整合ActiveMQ与Tomcat的过程中,首先需要将ActiveMQ lib目录下的五个关键JAR包(activemq-core-5.1.0.jar、activemq-web-5.1.0.jar、geronimo-j2ee-management_1.0_spec-1.0.jar、geronimo-jms_1.1_spec-1.1.1.jar...
10. **Tomcat服务器**:Tomcat是一个流行的Java Web服务器,它可以部署和运行使用Spring和ActiveMQ的Web应用程序。 通过上述知识点,我们可以理解如何在Spring环境中利用ActiveMQ进行消息传递,实现高并发、解耦的...
类似于上述的"ActiveMQ与Tomcat整合.doc",但格式为.docx,可能提供了更多细节或更新的信息。 7. **ActiveMQ实践入门指南.pdf**: 这是一本实践导向的入门指南,适合初学者,通常会包含实例代码和逐步教程,帮助...
通过这个实例,开发者不仅可以学习如何整合ActiveMQ和Spring,还能了解到如何在实际项目中应用消息队列,提升系统性能。同时,这也是对容器化部署的一种实践,有助于理解和掌握Web应用服务器的使用。
标题“Spring Tomcat ActiveMQ JMS”涉及到的是一个集成应用,涵盖了Java企业级开发中的三个重要组件:Spring框架、Tomcat应用服务器以及ActiveMQ消息中间件。这些技术都是Java EE开发中的基石,对于理解分布式系统...
总结来说,Spring Boot、MyBatis和ActiveMQ的整合为开发者提供了一个强大的工具集,可以轻松地构建出高性能、高可用性的企业级应用。通过合理的配置和代码设计,我们可以充分利用这些组件的优势,实现灵活、可扩展的...
在本文中,我们将探讨如何在Tomcat服务器上设置和使用ActiveMQ的简单实例。 **一、ActiveMQ的特点与优势** 1. **遵循JMS1.1规范**,兼容J2EE1.4及以上版本。 2. **跨平台**,可以在任何JVM和大多数Web容器中运行,...
在这个实例中,我们将深入探讨ActiveMQ如何与Spring框架、Swing GUI和Ajax技术进行整合。 1. **ActiveMQ与Spring整合**: Spring框架是一个流行的Java企业级应用开发框架,它提供了全面的事务管理、数据访问集成、...
在IT行业中,Spring框架和ActiveMQ的整合是构建高可用、高性能消息传递系统的重要实践。本实例"Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo"提供了一个完整的解决方案,帮助开发者了解如何在Spring环境中集成...
ActiveMQ允许应用程序通过发布/订阅和点对点模式进行异步通信。在本示例中,ActiveMQ将作为各个组件之间的通信桥梁,负责接收、存储和转发消息,提高系统的解耦度和可扩展性。 接着,Apache Camel是一个强大的集成...
它通过内嵌的Tomcat服务器和自动配置功能,使得开发者能够快速创建独立运行的、生产级别的Java应用。 接下来是ActiveMQ,它是Apache软件基金会的一个开源项目,是基于Java Message Service(JMS)规范的消息中间件...