Spring Jms入门实例
来源:互联网 发布:建筑软件大全 编辑:程序博客网 时间:2024/04/25 12:48
Spring JMS
Spring框架提供了一个模板机制来隐藏Java APIs的细节。开发人员可以使用JDBCTemplate和JNDITemplate类来分别访问后台数据库和JEE资源(数据源,连接池)。JMS也不例外,Spring提供JMSTemplate类,因此开发人员不用为一个JMS实现去编写样本代码。接下来是在开发JMS应用程序时Spring所具有一些的优势。
提供JMS抽象API,简化了访问目标(队列或主题)和向指定目标发布消息时JMS的使用。
开发人员不需要关心JMS不同版本(例如JMS 1.0.2与JMS 1.1)之间的差异。
开发人员不必专门处理JMS异常,因为Spring为所有JMS异常提供了一个未经检查的异常,并在JMS代码中重新抛出。
实战:下面是我在学习过程中的一个入门实例
2. 创建jmsconfig.xml用来装配jms,内容如下:
其中:
1) jmsConnectionFactory用的是Jboss自带的一个ConnectionFactory,可以在Jboss的deploy/jms目录下的uil2-service.xml文件中找到。
2) destination使用自定义的,需要在Jboss加一个配置文件,下面会介绍。
3) MessageProducer是消息发送方
4) MessageConsumer实现了一个MessageListener,监听是否收到消息。
3. 发送和接收消息的class如下:
4. 写一个Servlet作为测试
5. 在Jboss的deploy/jms目录下创建sc-jms-service.xml
6. 将工程达成war包直接放到Jboss的deploy目录下即可,然后启动Jboss访问JmsTest这个Servlet,你会在控制台看到接受到的消息,至此,一个最简单的Jms实例完成了
Spring框架提供了一个模板机制来隐藏Java APIs的细节。开发人员可以使用JDBCTemplate和JNDITemplate类来分别访问后台数据库和JEE资源(数据源,连接池)。JMS也不例外,Spring提供JMSTemplate类,因此开发人员不用为一个JMS实现去编写样本代码。接下来是在开发JMS应用程序时Spring所具有一些的优势。
提供JMS抽象API,简化了访问目标(队列或主题)和向指定目标发布消息时JMS的使用。
开发人员不需要关心JMS不同版本(例如JMS 1.0.2与JMS 1.1)之间的差异。
开发人员不必专门处理JMS异常,因为Spring为所有JMS异常提供了一个未经检查的异常,并在JMS代码中重新抛出。
实战:下面是我在学习过程中的一个入门实例
1. 在web.xml文件中配置一个spring用的上下文:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/jmsconfig.xml</param-value> </context-param> <!-- 配置Spring容器 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
2. 创建jmsconfig.xml用来装配jms,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>UIL2ConnectionFactory</value> </property> </bean> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>topic/scJms</value> </property> </bean> <!-- Spring JmsTemplate config --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <bean class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory" ref="jmsConnectionFactory"/> </bean> </property> </bean> <!-- POJO which send Message uses Spring JmsTemplate --> <!--配置消息发送者--> <bean id="messageProducer" class="co.transport.jms.MessageProducer"> <property name="template" ref="jmsTemplate"/> <property name="destination" ref="destination"/> </bean> <!-- Message Driven POJO (MDP) --> <bean id="messageListener" class="co.transport.jms.MessageConsumer"/> <!-- listener container,MDP无需实现接口 --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory"/> <property name="destination" ref="destination"/> <property name="messageListener" ref="messageListener"/> </bean> </beans>
其中:
1) jmsConnectionFactory用的是Jboss自带的一个ConnectionFactory,可以在Jboss的deploy/jms目录下的uil2-service.xml文件中找到。
2) destination使用自定义的,需要在Jboss加一个配置文件,下面会介绍。
3) MessageProducer是消息发送方
4) MessageConsumer实现了一个MessageListener,监听是否收到消息。
3. 发送和接收消息的class如下:
MessageProducer.java public class MessageProducer { private JmsTemplate template; private Destination destination; public void send(final String message) { template.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { Message m = session.createTextMessage(message); return m; } }); } public void setDestination(Destination destination) { this.destination = destination; } public void setTemplate(JmsTemplate template) { this.template = template; } } MessageConsumer.java public class MessageConsumer implements MessageListener { public void onMessage(Message message) { System.out.println("****************************************"); System.out.println(message); } }
4. 写一个Servlet作为测试
JmsTest.java(不要忘记在web.xml中配置这个servlet哦!)
public class JmsTest extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); pw.println("<html>"); pw.println("<head>"); pw.println("</head>"); pw.println("<body>"); try { ServletContext servletContext = this.getServletContext(); WebApplicationContext wac = WebApplicationContextUtils .getRequiredWebApplicationContext(servletContext); MessageProducer mp = (MessageProducer) wac.getBean("messageProducer"); mp.send("Message!!!!"); pw.println("<h3>success</h3>"); } catch (JmsException e) { pw.println(e); } pw.println("</body>"); pw.println("</html>"); } }
5. 在Jboss的deploy/jms目录下创建sc-jms-service.xml
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=somcJms"> <depends optional-attribute-name="DestinationManager"> jboss.mq:service=DestinationManager </depends> <depends optional-attribute-name="SecurityManager"> jboss.mq:service=SecurityManager </depends> <attribute name="SecurityConf"> <security> <role name="guest" read="true" write="true"/> <role name="publisher" read="true" write="true" create="false"/> <role name="durpublisher" read="true" write="true" create="true"/> </security> </attribute> </mbean> </server>
6. 将工程达成war包直接放到Jboss的deploy目录下即可,然后启动Jboss访问JmsTest这个Servlet,你会在控制台看到接受到的消息,至此,一个最简单的Jms实例完成了
转载:http://zhangli-lisa.iteye.com/blog/464586
- Spring Jms入门实例
- Spring Jms入门实例
- Spring Jms入门实例
- JMS入门之实例
- JMS入门之实例
- JMS入门之实例
- JMS入门实例
- JMS入门实例
- Weblogic JMS 入门简单实例
- jms activeMQ消息点对点通信入门实例
- jms activeMQ发布与订阅入门实例
- 深入浅出JMS(三)---ActiveMQ入门实例
- weblogic jms 不融合spring 实例讲解
- JMS 异步传输与Spring结合实例
- ActiveMQ JMS Spring的一个实例
- Spring与Jms结合的实例
- ActiveMQ JMS Spring的一个实例
- Spring整合JMS(消息中间件)实例
- Application framework
- ZOJ 1092 Arbitrage 【Floyd-Warshal】
- 求助:Three20 使用TTURLXMLResponse 获取XML问题
- MyEclipse7 creation of element failed org.eclipse.core.internal.registry.configurationelementhandle
- IMDB评分TOP250部给力电影
- Spring Jms入门实例
- 为什么std::valarray会很慢。
- 反编译Apk得到Java源代码
- 天融信top sec防火墙关于内外网ip映射配置
- 系统架构-UML 包图
- 字符替换 2700:字符替换
- ubuntu下web服务器环境搭建学习笔记
- hdu 2059
- 命令模式