(1)在<webapp-root>/META-INF/下建立context.xml. 这样可以不用在tomcat的context.xml中配置resource。
<Context antiJARLocking="true">
<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" />
</Context>
(2)web.xml中配置spring和resource
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<res-type>org.apache.activemq.ActiveMQConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jms/Queue</res-ref-name>
<res-type>org.apache.activemq.command.ActiveMQQueue</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:app-activemq-tomcat.xml
</param-value>
</context-param>
<!-- Listener contextConfigLocation -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Listener log4jConfigLocation -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
</web-app>
(3)spring的配置文件app-activemq-tomcat.xml
<?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="tomcatactivemq.MessageSender">
<property name="jmsTemplate">
<ref bean="jmsTemplate" />
</property>
</bean>
<!-- 接收消息 -->
<bean id="receiver" class="tomcatactivemq.MessageReceiver">
<property name="jmsTemplate">
<ref bean="jmsTemplate" />
</property>
</bean>
<bean id="messageTest" class="tomcatactivemq.MessageTest">
<property name="sender">
<ref bean="sender" />
</property>
<property name="receiver">
<ref bean="receiver" />
</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>
(4)三个java文件
package tomcatactivemq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.jms.core.JmsTemplate;
/**
* 消息接收者
*
*/
public class MessageReceiver implements MessageListener {
private JmsTemplate jmsTemplate;
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage text=(TextMessage)message;
try {
System.out.println("receiver:" + text.getText());
} catch (Exception e) {
}
}
}
}
package tomcatactivemq;
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整合
* 消息发送者
*
*/
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 tomcatactivemq;
import javax.jms.JMSException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 测试类
*
*/
public class MessageTest {
private MessageSender sender;
private MessageReceiver receiver;
public void test() throws JMSException {
sender.send("helloworld");
}
public MessageSender getSender() {
return sender;
}
public void setSender(MessageSender sender) {
this.sender = sender;
}
public MessageReceiver getReceiver() {
return receiver;
}
public void setReceiver(MessageReceiver receiver) {
this.receiver = receiver;
}
}
(4)index.jsp
<%@ page language="java" import="tomcatactivemq.*" pageEncoding="UTF-8"%>
<%@ page import="org.springframework.context.ApplicationContext"%>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%@ page import="tomcatactivemq.MessageTest"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
%>
<!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 = (MessageTest) ctx.getBean("messageTest");
message.test();
%>
<br>
hello world!
</body>
</html>
参见:http://topmanopensource.iteye.com/blog/1065633
分享到:
相关推荐
在Tomcat的conf/context.xml中的元素里面加上如下配置: auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq....
在集成Apache ActiveMQ到Tomcat应用...在Spring的`applicationContext.xml`配置文件中,我们可以使用JNDI来查找在Tomcat中定义的资源。例如,我们可以创建一个bean来获取`jms/NormalConnectionFactory`: ```xml ...
### Spring+JMS+ActiveMQ+Tomcat 实现消息服务 #### 一、技术栈介绍 在本案例中,我们采用的技术栈为Spring 2.5、ActiveMQ 5.4.0 和 Tomcat 6.0.30。这些技术的结合能够有效地构建一个可靠的消息传递系统。 - **...
【ActiveMQ-JMS简单实例使用Tomcat】是一个关于如何在Tomcat环境下集成并使用ActiveMQ进行JMS消息传递的初级教程。ActiveMQ是一款开源的消息中间件,它遵循JMS(Java Message Service)1.1规范,能兼容J2EE1.4及以上...
在本文中,我们将探讨如何在Tomcat服务器上设置和使用ActiveMQ的简单实例。 **一、ActiveMQ的特点与优势** 1. **遵循JMS1.1规范**,兼容J2EE1.4及以上版本。 2. **跨平台**,可以在任何JVM和大多数Web容器中运行,...
在“Spring JMS 消息处理-基于JNDI”的博文中,作者可能会讲解如何在应用服务器如Tomcat或WebLogic中配置JNDI资源,以及如何在Spring配置文件中声明JNDI查找。 1. **JMS核心概念**:首先,博客会介绍JMS的基本概念...
在Tomcat中配置JMS,需要在`context.xml`或`server.xml`中添加相关JNDI资源定义,以便Spring可以从JNDI查找ConnectionFactory。 3. **创建消息生产者**:在Spring应用中,你可以创建一个`MessageProducer`类,使用`...
由于Spring框架的广泛使用,ActiveMQ 提供了良好的Spring集成支持,开发者可以轻松地将ActiveMQ 与Spring框架集成起来,简化配置过程,提高开发效率。 6. **速度很快** 相比于其他JMS Provider,如JBossMQ,...
32.1.1. ActiveMQ Support 32.1.2. Artemis Support 32.1.3. Using a JNDI ConnectionFactory 32.1.4. Sending a Message 32.1.5. Receiving a Message 32.2. AMQP 32.2.1. RabbitMQ support 32.2.2. Sending a ...
客户端配置主要包括JNDI配置文件、Tomcat集成以及Spring框架集成等方面。 ### 6. 代理配置 代理配置是ActiveMQ的核心部分,涉及XML配置文件的编写、连接器配置、网络配置等内容。 ### 7. 传输协议 ActiveMQ支持...
7. **EJB(Enterprise JavaBeans)**:虽然现代项目中使用较少,但对EJB的基本概念,如会话bean、实体bean、消息驱动bean、JNDI查找等仍需了解。 8. **JMS(Java Message Service)**:理解消息队列的概念,以及...
总的来说,分布式Hibernate Search通过整合Apache ActiveMQ和Spring,实现了在多节点环境下的索引分发和同步,提高了系统的可伸缩性和容错性。在实际应用中,可以根据需求调整配置,比如改变ActiveMQ的部署方式,...
- Tomcat、Jetty等是常见的Servlet容器,理解如何配置和部署WAR文件到这些容器。 - 部署到应用服务器如WebLogic、WebSphere的流程和注意事项。 11. **性能调优**: - JVM内存模型、垃圾回收机制以及如何调整JVM...
8. **Spring框架**:虽然2009年的面试可能未重点考察Spring,但它是现在J2EE开发的主流框架,涉及到依赖注入、AOP(面向切面编程)、MVC架构等,了解其基本原理和使用是必要的。 9. **Web容器与应用服务器**:如...
Porting from Tomcat Jetty版本比较列表 参考 Jetty 7 Latest JavaDoc Jetty 7 Latest Source XRef Index of Generated Release Documents–API and XRef documentation for previous releases. 通用参考 Jetty体系...
- **消息队列**:如何使用JMS进行异步通信,以及消息队列的实现,如ActiveMQ或RabbitMQ。 - **消息模型**:点对点和发布/订阅模式的理解。 7. **JPA(Java Persistence API)与Hibernate** - JPA作为ORM(对象...
8. **J2EE相关**:涵盖EJB、JMS、JNDI、JTA等企业级Java技术,以及Spring、Hibernate、MyBatis等主流框架的原理和使用。 【J2EE经典面试题及答案.doc】 J2EE经典面试题主要涉及了Web服务、企业级应用开发、数据库...