分享

WebLogic JMS实例:使用Spring开发JMS

 开心豆豆2010 2011-08-11

Spring的JMS框架抽象了JMS API的使用并与JMS提供者(如WebLogic Server,WebSphere MQ)。下面以一个简单的发送接收消息的例子来说明如何使用Spring Jms。
准备:下载WebLogic9.2安装,并配置相关Jms Server和Jms Module。

使用Eclipse建立java project,将相关weblogic包加入到工程。

建立配置文件
使用Spring IoC的方法建立相关Jms对象,下面是jmsconfig.xml具体内容。
jmsconfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "
http://www./dtd/spring-beans.dtd">
<beans>
<!-- JNDI上下文模板 -->
<bean id="jndiTemplate"
   class="org.springframework.jndi.JndiTemplate">
   <property name="environment">
    <props>
     <!-- your weblogic url -->
     <prop key="java.naming.provider.url">
      t3://150.236.80.44:7001
     </prop>
     <prop key="java.naming.factory.initial">
      weblogic.jndi.WLInitialContextFactory
     </prop>
     <!--weblogic username and password -->
     <prop key="java.naming.security.principal">
      weblogic
     </prop>
     <prop key="java.naming.security.credentials">
      weblogic
     </prop>
    </props>
   </property>
</bean>
<!-- 连接工厂配置-->
<bean id="jmsConnectionFactory"
   class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName">
    <value>jms.connFactory</value>
   </property>
   <property name="jndiTemplate">
    <ref bean="jndiTemplate" />
   </property>
</bean>
<!-- 发送队列配置 -->
<bean id="destinatinForSender"
   class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiTemplate">
    <ref bean="jndiTemplate" />
   </property>
   <property name="jndiName">
    <value>jms.queue</value>
   </property>
</bean>
<bean id="jmsConverter"
   class="org.springframework.jms.support.converter.SimpleMessageConverter" />
<!-- JMS template配置 -->
<bean id="jmsTemplateSender"
   class="org.springframework.jms.core.JmsTemplate">
   <property name="connectionFactory">
    <ref bean="jmsConnectionFactory" />
   </property>
   <property name="defaultDestination">
    <ref bean="destinatinForSender" />
   </property>
   <property name="messageConverter">
    <ref bean="jmsConverter" />
   </property>
</bean>
<!-- 接收队列配置 -->
<bean id="destinatinForReceiver"
   class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiTemplate">
    <ref bean="jndiTemplate" />
   </property>
   <property name="jndiName">
    <value>jms.queue</value>
   </property>
</bean>
<bean id="jmsTemplateReceiver"
   class="org.springframework.jms.core.JmsTemplate">
   <property name="connectionFactory">
    <ref bean="jmsConnectionFactory" />
   </property>
   <property name="defaultDestination">
    <ref bean="destinatinForReceiver" />
   </property>
   <property name="messageConverter">
    <ref bean="jmsConverter" />
   </property>
</bean>
</beans>


建立测试类:
发送消息类JmsSenderApp.java
package jms.sample.jmstemplate;

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

public class JmsSenderApp {
public static void main(String[] args) {
   ApplicationContext ctx = new FileSystemXmlApplicationContext(
     "jmsconfig.xml");
   JmsTemplate jmsSender = (JmsTemplate) ctx.getBean("jmsTemplateSender");
   System.out.println("send message:");
   jmsSender.send(new MessageCreator() {
    public Message createMessage(Session session) throws JMSException {
     return session.createTextMessage("This is a sample message");
    }
   });
   System.out.println("ok, send message end");
}
}

接收消息类JmsReceiverApp.java
package jms.sample.jmstemplate;

import javax.jms.JMSException;
import javax.jms.Message;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

public class JmsReceiverApp {
public static void main(String[] args) throws JMSException {
   ApplicationContext ctx = new FileSystemXmlApplicationContext(
     "jmsconfig.xml");
   JmsTemplate jmsReceiver=(JmsTemplate)ctx.getBean("jmsTemplateReceiver");
   System.out.println("begin receiving message:");
   Message msg=jmsReceiver.receive();
   System.out.println("received messages: "+msg.toString()+msg.getJMSDestination());
   System.out.println("receive message end");
}
}
先执行JmsSenderApp发送消息,然后执行JmsSenderApp接收消


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多