`
a3mao
  • 浏览: 562960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring+weblogic接收JMS消息

    博客分类:
  • Work
阅读更多
上篇文章学习了在spring里如何发送JMS消息到weblogic的Queue里。
这篇是学习spring里如何处理消息的。
spring提供了几种不同的api来处理消息:
1. javax.jms.MessageListener
2. org.springframework.jms.listener.SessionAwareMessageListener
3. 任意定义java类
前两种方式都必须要实现他们的接口,而第三种方式则是我们任意定义的java类。
首先第一种:ExampleListener.java

package com.test.jms;

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

public class ExampleListener implements MessageListener
{

public void onMessage(Message message)
{
if (message instanceof TextMessage)
{
try
{
System.out.println("ExampleListener receive messages: "+((TextMessage) message).getText());
} catch (JMSException ex)
{
throw new RuntimeException(ex);
}
} else
{
throw new IllegalArgumentException("Message must be of type TextMessage");
}
}
}
对应的配置:
<bean id="exampleMessageListener" class="com.test.jms.ExampleListener" />
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="jmsDestination" /> -->
<property name="messageListener" ref="exampleMessageListener" />
</bean>

第二种:ExampleSessionAwareMessageListener.java
package com.test.jms;

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

import org.springframework.jms.listener.SessionAwareMessageListener;

public class ExampleSessionAwareMessageListener implements SessionAwareMessageListener
{

public void onMessage(Message message, Session session) throws JMSException
{
if (message instanceof TextMessage)
{
try
{
System.out.println("\nsession is : "+session+"  ExampleSessionAwareMessageListener receive messages: "+((TextMessage) message).getText());
} catch (JMSException ex)
{
throw new RuntimeException(ex);
}
} else
{
throw new IllegalArgumentException("Message must be of type TextMessage");
}
}

}

对应的配置:
<bean id="exampleSessionAwareMessageListener" class="com.test.jms.ExampleSessionAwareMessageListener" />
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="jmsDestination" />
<property name="messageListener" ref="exampleSessionAwareMessageListener" />
</bean>

第三种:ExampleMessageListenerAdapter.java

package com.test.jms;

import javax.jms.JMSException;
import javax.jms.TextMessage;

public class ExampleMessageListenerAdapter
{
public void receive(TextMessage message) throws JMSException
{
String msg = message.getText();
System.out.println("ExampleMessageListenerAdapter receive messages: "+msg);
}
}
对应的配置;
<bean id="exampleMessageListenerAdapter"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.test.jms.ExampleMessageListenerAdapter" />
</constructor-arg>
<property name="defaultListenerMethod" value="receive" />
<property name="messageConverter">
<null />
</property>
</bean>
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="jmsDestination" />
                <property name="messageListener" ref="exampleMessageListenerAdapter" />
</bean>

这样当spring容器启动完成后便会监听消息Queue,当有消息发送到Queue里,jmsContainer会将消息交给所配置的监听来处理。
需要说明的是,第三种方式只能接收,处理 javax.jms.TextMessage 类型的消息。

spring2.x 里对配置文件做了很大改变,我们可以使用新的配置。
applicationContext-jms.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>

<bean id="exampleMessageListenerAdapter"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.test.jms.ExampleMessageListenerAdapter" />
</constructor-arg>
<property name="defaultListenerMethod" value="receive" />
<property name="messageConverter">
<null />
</property>
</bean>

<jms:listener-container connection-factory="jmsConnectionFactory"
destination-type="queue"
concurrency="10"
transaction-manager="transactionManager"
>
    <jms:listener destination="JMSServer-0/SystemModule-0!Queue-0" ref="exampleMessageListenerAdapter" />
</jms:listener-container>

</beans>

需要说明的是,listener 属性的destination指的是你所配置的queue的名称。必须加上JMS Server的名称。
1
0
分享到:
评论
1 楼 anqinghaozi 2016-11-02  
请问 你这weblogic jms 如何部署到tomcat上去?我想在页面上点击按钮发送消息。

相关推荐

    Spring+Weblogic JMS

    在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...

    Spring+weblogic9.2发送JMS消息

    在Spring框架中,我们可以使用`JMSTemplate`来简化JMS操作,包括发送和接收消息。 集成Spring和WebLogic 9.2发送JMS消息的步骤如下: 1. **配置JMS连接工厂**:在Spring的配置文件中,你需要定义一个JMS连接工厂。...

    spring,weblogic配置jms

    Spring框架是一个广泛使用的Java应用开发框架,它提供了与多种消息中间件集成的能力,包括WebLogic Server的JMS服务。WebLogic是Oracle公司的一款企业级应用服务器,它支持JMS规范,提供了强大的消息队列和发布/订阅...

    weblogic与jms+spring

    【WebLogic 与 JMS+Spring 整合详解】 WebLogic 是由 BEA Systems(现已被 Oracle 收购)开发的一款 Java 应用服务器,它主要用于构建、部署和管理大型分布式Web应用、网络应用和数据库应用。WebLogic 提供了对多种...

    weblogic中使用JMS发送和接受消息

    WebLogic Server是一款由Oracle公司提供的企业级应用服务器,它支持Java Message Service (JMS) 规范,允许在分布式环境中可靠地发送和接收消息。JMS是Java平台上的标准接口,用于实现应用程序间的异步通信。本文将...

    Spring整合Weblogic jms实例详解

    * 灵活性:使用 Spring 整合 Weblogic JMS 可以提供灵活的消息传递机制,例如可以根据需要选择不同的消息传递协议。 Spring 整合 Weblogic JMS 是一种非常有用的技术,可以为应用程序提供高性能、可靠性和灵活性的...

    springboot集成weblogic的jms源码.zip

    这个示例代码提供了从Spring Boot应用向WebLogic JMS发送和接收消息的基本结构,可以帮助开发者快速理解并实现自己的集成方案。通过深入研究和调整这些源码,你可以根据实际需求构建出更复杂的JMS应用场景,如事务性...

    JMS入门小例子以及weblogic安装,并且在weblogic中配置JMS服务

    Spring框架提供了强大的支持来简化JMS的使用,如`JmsTemplate`类用于发送消息,以及`MessageListener`接口用于接收消息。在`spring-jms.xml`中,你可以配置`JmsTemplate`的bean,设置连接工厂、目的地等属性。同时,...

    jms.rar_weblogic8 spring jms

    在IT领域,尤其是在企业级应用开发中,Java消息服务(JMS)扮演着重要的角色,它提供了一种标准的方式来发送和接收异步消息。本文将深入探讨如何在Spring框架下配置JMS,并结合WebLogic 8.1这个J2EE容器进行实践。...

    Spring JMS 消息处理-基于JNDI

    在“Spring JMS 消息处理-基于JNDI”的博文中,作者可能会讲解如何在应用服务器如Tomcat或WebLogic中配置JNDI资源,以及如何在Spring配置文件中声明JNDI查找。 1. **JMS核心概念**:首先,博客会介绍JMS的基本概念...

    MQ、JMS以及ActiveMQ关系的理解

    作为JMS的一个实现,ActiveMQ提供了与多种消息队列产品进行交互的能力,并且允许Java应用程序以标准的方式发送和接收消息。ActiveMQ的主要特点包括支持多种编程语言和协议的客户端、完全支持JMS 1.1和J2EE 1.4规范、...

    JMS远程调用

    描述中提到,Spring在处理JMS远程调用时,会在同一个非事务Session中并发地发送和接收消息,这意味着调用是异步的,提高了系统的响应性和可扩展性。但这也意味着服务的调用者不能立即得到返回结果,而是需要等待...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5...

    ActiveMQ简单教程

    结合 ActiveMQ,SpringJMS 可以帮助开发者轻松创建生产者和消费者,进行消息的发送和接收。通过 Spring 的配置文件,可以定义连接工厂、目的地(如队列或主题)以及消息监听器,从而实现与 ActiveMQ 的集成。 在...

    Spring 2.0 开发参考手册

    19.2. 使用Spring JMS 19.2.1. JmsTemplate 19.2.2. 连接工厂 19.2.3. (消息)目的地管理 19.2.4. 消息侦听容器 19.2.5. 事务管理 19.3. 发送一条消息 19.3.1. 使用消息转换器 19.3.2. SessionCallback 和...

    Spring中文帮助文档

    2.4.4. 异步的JMS 2.4.5. JDBC 2.5. Web层 2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持...

Global site tag (gtag.js) - Google Analytics