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

Spring+weblogic9.2发送JMS消息

    博客分类:
  • Work
阅读更多
Spring提供了一个用于简化JMS API使用的抽象框架,并且对用户屏蔽了JMS API中1.0.2和1.1版本的差异。

JMS的功能大致上分为两块,叫做消息制造和消息消耗。JmsTemplate用于制造消息和同步消息接收。和Java EE的事件驱动bean风格类似,对于异步接收消息,Spring提供了一些消息侦听容器来创建消息驱动的POJO(MDP)。

消息域的统一

JMS规范有两个主要的版本,1.0.2和1.1。

JMS1.0.2定义了两种消息域,点对点(队列)和发布/订阅(主题)。JMS 1.0.2的API为每个消息域提供了一个平行的类层次结构。导致客户端应用只能使用特定消息域的JMS API。JMS 1.1引进了统一消息域的概念使这两种消息域之间功能和客户端API的差别尽可能小。举个已消除的功能差异的例子,如果你使用的是JMS 1.1的消息供应者,你可以使用同一个Session事务性地在一个域消耗了一个消息后并且在另一个域中产生一个消息。

JMS 1.1的规范发布于2002年4月,并且在2003年11月成为J2EE 1.4的一个组成部分,结果,现在大多数使用的应用服务器只支持JMS 1.0.2的规范.
org.springframework.jms.core包提供使用JMS的核心功能。 就象为JDBC提供的JdbcTemplate一样,它提供了JMS模板类来处理资源的创建和释放以简化JMS的使用。Spring模板类的公共设计原则就是通过提供助手方法去执行公共的操作,并将实际的处理任务委派到用户实现的回调接口上,从而完成更复杂的操作。 JMS模板也遵循这样的设计原则。这些类提供众多便利的方法来发送消息、同步接收消息、使用户可以接触到JMS session和消息产生者。

org.springframework.jms.support包提供JMSException的转换功能。它将受控的 JMSException异常层次转换到一个对应的非受控异常层次。任何受控javax.jms.JMSException异常的子类都被包装在非受控UncategorizedJmsException异常里。

org.springframework.jms.support.converter 包提供一个MessageConverter用来抽象Java对象和JMS消息之间的转换操作。

包org.springframework.jms.support.destination为管理JMS目的地提供多种策略,例如为存储在JNDI中的目的地提供一个服务定位器。

最后,org.springframework.jms.connection包提供一个适合在独立应用中使用的 ConnectionFactory的实现。它还为JMS提供了一个Spring的PlatformTransactionManager的实现(现在叫做JmsTransactionManager)。这样可以把JMS作为一个事务资源无缝地集成到Spring的事务管理机制中去。
--------上面这段话摘自 spring的文档,我们可以看到spring的强大。
在spring中发送JMS消息要有必要的几个配置:JmsTemplate,jmsConnectionFactory以及jmsDestination。

配置文件-applictionContext-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"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- define the jms queue's connectionFactory jndi -->
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>ATOMCONFAT</value>
</property>
<property name="jndiTemplate">
<ref bean="jmsJndiTemplate"></ref>
</property>
</bean>
<!-- define jms queue jndi -->
<bean id="jmsDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>ATOM-QUEUE</value>
</property>
<property name="jndiTemplate">
<ref bean="jmsJndiTemplate"></ref>
</property>
</bean>
<!-- define jms queue url -->
<bean id="jmsJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<!-- com.sun.enterprise.naming.SerialInitContextFactory -->
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://10.5.24.17:41009</prop>
</props>
</property>
</bean>
<!-- JMS Queue Send Template  -->
<bean id="jmsSendQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref local="jmsConnectionFactory" />
</property>
<property name="defaultDestination">
<ref local="jmsDestination" />
</property>
</bean>
</beans>
这是一个完整的jms配置。

web.xml的配置:
<context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>
              classpath:/applicationContext-jms.xml
        </param-value>
    </context-param> 
 
    <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

发送消息的java类 JmsQueueSender.java

package com.test.jms;

import java.util.Enumeration;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.Session;

import org.springframework.jms.core.BrowserCallback;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.SessionCallback;

public class JmsQueueSender
{
public JmsQueueSender(){}

private JmsTemplate jmsTemplate;
private Destination destination;
private JMSMessageCreator jmsCreator;
public void sendMesage()
{
try
{
for (int i = 0; i < 5; ++i)
{

System.out.println("destination="+destination);
jmsTemplate.send(destination,new MessageCreator()
{
public Message createMessage(Session session) throws JMSException
{
return session.createTextMessage("Hello World! "
+ System.currentTimeMillis());
}
});
                                System.out.println("Message Num. "+i +" sent to Queue\n");
}

} catch (Exception e)
{
e.printStackTrace();
}
}

public void browserQueue()
{
jmsTemplate.browse(new BrowserCallback(){

public Object doInJms(Session arg0, QueueBrowser browser)
throws JMSException
{
Enumeration messages = browser.getEnumeration();
        while (messages.hasMoreElements())
        {
            Object obj = messages.nextElement();
            System.out.println("\nMessage is:"+obj);
        }
return null;
}});
/* Integer count = (Integer) this.jmsTemplate.execute(new SessionCallback()
{
    public Object doInJms(Session session) throws JMSException
    {
        int count = 0;
        QueueBrowser browser = session.createBrowser((Queue) jmsTemplate.getDefaultDestination());
        Enumeration messages = browser.getEnumeration();

        while (messages.hasMoreElements())
        {
            count++;
            Object obj = messages.nextElement();
            System.out.println("-----obj===="+obj);
        }
        return new Integer(count);
    }
});*/
}

public JmsTemplate getJmsTemplate()
{
return jmsTemplate;
}

public void setJmsTemplate(JmsTemplate jmsTemplate)
{
this.jmsTemplate = jmsTemplate;
}

public Destination getDestination()
{
return destination;
}

public void setDestination(Destination destination)
{
this.destination = destination;
}

}

测试代码
    WebApplicationContext wac;  
    ServletContext application = getServletContext();  
    wac = WebApplicationContextUtils.getWebApplicationContext(application);//获取spring的context  
    JmsQueueSender jmsSender = (JmsQueueSender) wac.getBean("jmsSender");  
    jmsSender.sendMesage();
   jmsSender.browserQueue();
1
0
分享到:
评论

相关推荐

    MyEclipse + WebLogic 9.2 配置详解

    MyEclipse + WebLogic 9.2 配置详解 本文主要讲解如何配置 MyEclipse 和 WebLogic 9.2,以便在开发和部署 Java Web 应用程序时更加高效和方便。 首先,选择 WebLogic 9.2 的原因是因为 WebLogic 8 只支持 J2EE 1.3...

    Myeclipse5.5 + Weblogic9.2 configure

    WebLogic Server 9.2是BEA Systems(后来被Oracle收购)发布的一款企业级应用服务器,它支持Java EE 5规范,提供了包括Web服务、JMS、EJB在内的多种服务。以下是WebLogic 9.2的安装步骤: 1. 运行安装程序`server...

    MyEclipse 5.0GA + WebLogic 9.2 配置详解

    本文主要介绍如何在MyEclipse 5.0GA环境下配置和使用WebLogic 9.2服务器,这对于初学者来说是一份非常实用的教程。WebLogic 9.2相较于之前的8.0版本,主要提升了对J2EE 1.4和Servlet 2.4规范的支持,解决了与Servlet...

    Spring+weblogic接收JMS消息

    - 可以使用Spring的`JmsTemplate`进行发送消息的测试,或者通过WebLogic Server的管理控制台查看JMS资源的状态和消息队列。 通过以上知识,开发者可以构建一个基于Spring的Java应用,有效地利用WebLogic Server的...

    MyEclipse 5.0 + WebLogic 9.2 配置解.doc

    ### MyEclipse 5.0 + WebLogic 9.2 配置详解 #### 一、背景介绍 本文档旨在详细介绍如何在MyEclipse 5.0环境下配置WebLogic 9.2服务器,并解决在此过程中可能遇到的一些常见问题。本文档适用于已经熟悉Java EE开发...

    Spring+Weblogic JMS

    6. **发送和接收消息**:使用`JmsTemplate`可以方便地发送消息,而消息的接收则由监听器容器自动处理。 7. **事务管理**:Spring支持与JMS的事务整合,可以配置事务边界,确保消息发送与业务操作原子性。 8. **...

    webLogic9.2配置JMS步骤

    WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...

    weblogic9.2环境部署

    WebLogic Server 9.2 环境部署详解 WebLogic Server 是一款由 Oracle 公司提供的企业级 Java 应用服务器,它提供了一个用于开发、集成、部署和管理Java EE应用程序的平台。本篇文章将详细阐述如何在Windows环境下...

    weblogic9.2安装过程

    WebLogic 9.2 安装过程详解 在 Unix 系统下安装 WebLogic 9.2 需要按照特定的步骤进行操作,以确保安装成功。在本文中,我们将详细介绍 WebLogic 9.2 的安装过程,并提供相关的命令和配置信息。 安装 WebLogic 9.2...

    WebLogic9.2安装及配置[定义].pdf

    WebLogic 9.2 安装及配置 WebLogic 9.2 是 BEA Systems 公司开发的一款 Java EE 应用服务器,用于部署和管理 Java EE 应用程序。本文档将指导读者安装和配置 WebLogic 9.2 服务器,解决常见的安装和配置问题。 一...

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

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

    weblogic 9.2 win32

    根据提供的文件信息,我们可以深入探讨WebLogic 9.2的相关知识点。尽管提供的链接无法直接访问,但是基于标题、描述和部分可用内容,可以提炼出以下关键知识点: ### WebLogic 9.2 概述 #### 一、WebLogic 9.2 ...

    weblogic9.2许可文件

    WebLogic Server 9.2 是 Oracle 公司提供的一个企业级 Java 应用服务器,它为开发和部署基于 Java EE(Java Platform, Enterprise Edition)的应用程序提供了全面的平台。WebLogic Server 在运行时,对并发用户数有...

    webwork2.1.7+spring+hibernate3+oracle+weblogic8.1登录示例(详解)

    在这个示例中,我们探讨的是一个基于WebWork 2.1.7、Spring、Hibernate 3、Oracle 10和WebLogic 8.1的登录系统实现。这个系统的目的是通过输入用户名来查询数据库中对应的用户数据。以下是各个组件及其作用的详细...

    weblogic9.2的配置及部署

    ### WebLogic 9.2 的配置与部署 #### 一、WebLogic 9.2 概述 WebLogic Server 是一款高性能的企业级 Java 应用服务器,由 Oracle 公司开发并维护。WebLogic 9.2 版本是该系列中的一个重要版本,它提供了强大的...

    weblogic 9.2 for linux

    下载链接在附件中,weblogic 9.2 for linux

Global site tag (gtag.js) - Google Analytics