<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    使用Spring的MDP,我們可以與JMS服務提供者通信,向隊列或是主題發送或消費JMS消息,下面是兩個示例程序,分別是與隊列和主題通信,兩個程序大同小異,主要是配置上有些許區別,其中Weblogic中的JMS相關配置部分請見“Weblogic9.2中JMS的相關配置”。

    為了減少體積,這兩個程序去除了庫,這些庫是commons-logging-1.0.4.jar,dom4j-1.6.1.jar,log4j-1.2.14.jar,mysql-connector-java-5.0.6-bin.jar,spring.jar,weblogic.jar,其中mysql-connector-java-5.0.6-bin.jar不是必要的,因為與數據庫連接的部分程序已經刪除。大家可以自行尋找這些jar包加入工程中。

    與隊列通信的程序下載地址如下:
    http://www.tkk7.com/Files/heyang/SpringJMS_Topic20090924103204.rar

    此程序的Spring配置文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        
    <!-- jndiTemplate 配置 -->
        
    <bean id="jndiTemplate"
            class
    ="org.springframework.jndi.JndiTemplate">
            
    <property name="environment">
                
    <props>
                    
    <prop key="java.naming.factory.initial">
                        weblogic.jndi.WLInitialContextFactory
                    
    </prop>
                    
    <prop key="java.naming.provider.url">
                        t3://localhost:7001
                    
    </prop>
                    
    <prop key="java.naming.factory.url.pkgs">
                        weblogic.jndi.factories
                    
    </prop>
                
    </props>
            
    </property>
        
    </bean>
        
        
    <!-- JMS隊列 配置 -->
        
    <bean id="destination"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName">
                
    <value>MyJmsQueue</value>
            
    </property>
            
    <property name="jndiTemplate">
                
    <ref local="jndiTemplate"></ref>
            
    </property>
        
    </bean>
        
         
    <!-- JMS連接工廠 配置 -->
        
    <bean id="connectionFactory"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName">
                
    <value>MyJmsConnectionFactory</value>
            
    </property>
            
    <property name="jndiTemplate">
                
    <ref local="jndiTemplate"></ref>
            
    </property>
        
    </bean>
        
        
    <!-- jmsTemplate 配置 -->
        
    <bean id="jmsTemplate"
            class
    ="org.springframework.jms.core.JmsTemplate">
            
    <property name="connectionFactory">
                
    <ref local="connectionFactory" />
            
    </property>
            
    <property name="defaultDestination">
                
    <ref local="destination" />
            
    </property>
        
    </bean>    
        
        
    <!-- JMS 消息發送者 配置-->
        
    <bean id="jmsQueueSender"
            class
    ="com.heyang.sender.JmsQueueSender">
            
    <property name="connectionFactory" ref="connectionFactory" />
            
    <property name="queue" ref="destination" />
        
    </bean>    

        
    <!-- JMS 消息監聽容器 -->
        
    <bean id="listenerContainer"
            class
    ="org.springframework.jms.listener.DefaultMessageListenerContainer">        
            
    <property name="connectionFactory" ref="connectionFactory" />
            
    <property name="concurrentConsumers" value="1" />
            
    <property name="destination" ref="destination" />
            
    <property name="messageListener" ref="messageListener" />
        
    </bean>
        
        
    <!-- Message Driven POJO (MDP 消息驅動POJO) -->
        
    <bean id="messageListener" class="com.heyang.receiver.JmsQueueListener" />    
     
    </beans>

    消息發送者源碼:
    package com.heyang.sender;

    import java.io.File;

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

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.jms.core.JmsTemplate102;
    import org.springframework.jms.core.MessageCreator;

    public class JmsQueueSender{
        
    private JmsTemplate jmsTemplate;

        
    private Queue queue;

        
    public void setConnectionFactory(ConnectionFactory cf) {
            
    this.jmsTemplate = new JmsTemplate102(cf, false);
        }

        
    public void setQueue(Queue queue) {
            
    this.queue = queue;
        }
        
        
    public void sendMsg(final String msg) {
            
    this.jmsTemplate.send(this.queue, new MessageCreator() {
                
    public Message createMessage(Session session) throws JMSException {
                    
    return session.createTextMessage(msg);
                }
            });
        }
        
        
    public static void main(String[] args) throws Exception{
            ApplicationContext appContext 
    = new ClassPathXmlApplicationContext("bean.xml");

            JmsQueueSender jmsSender 
    = (JmsQueueSender)appContext.getBean("jmsQueueSender");        
            jmsSender.sendMsg(readProvinceMsgFromXMl(
    "msg.xml"));
            System.out.println(
    "消息發送完畢");
        }

        
    /**
         * 從XML文件中讀取文本
         * 
    @param xmlFile
         * 
    @throws DocumentException 
         
    */
        
    public static String readProvinceMsgFromXMl(String xmlFile) throws DocumentException{
            SAXReader reader
    =new SAXReader();
            Document document
    =reader.read(new File(xmlFile));
            Element root
    =document.getRootElement();
            
    return root.asXML();
        }
    }

    消息消費者源碼:
    package com.heyang.receiver;

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

    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;

    public class JmsQueueListener implements MessageListener {
        
    public void onMessage(Message message) {
            
    if (message instanceof TextMessage) {
                
    try {
                    String msg
    =((TextMessage) message).getText();                
                    System.out.print(
    "已經收到消息:"+msg);
                
                    Document document
    =DocumentHelper.parseText(msg);
                    Element root
    =document.getRootElement();
                    
                    System.out.println(root.asXML());

                } 
    catch (Exception ex) {
                    
    throw new RuntimeException(ex);
                }
            } 
        }
    }   

    與主題通信的程序下載地址如下:
    http://www.tkk7.com/Files/heyang/SpringJMS_Queue20090924103214.rar

    此程序的配置文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        
    <!-- jndiTemplate 配置 -->
        
    <bean id="jndiTemplate"
            class
    ="org.springframework.jndi.JndiTemplate">
            
    <property name="environment">
                
    <props>
                    
    <prop key="java.naming.factory.initial">
                        weblogic.jndi.WLInitialContextFactory
                    
    </prop>
                    
    <prop key="java.naming.provider.url">
                        t3://localhost:7001
                    
    </prop>
                    
    <prop key="java.naming.factory.url.pkgs">
                        weblogic.jndi.factories
                    
    </prop>
                
    </props>
            
    </property>

        
    </bean>
        
        
    <!-- JMS主題 配置 -->
        
    <bean id="destination"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName">
                
    <value>MyJmsTopic</value>
            
    </property>
            
    <property name="jndiTemplate">
                
    <ref local="jndiTemplate"></ref>
            
    </property>
        
    </bean>
        
         
    <!-- JMS連接工廠 配置 -->
        
    <bean id="connectionFactory"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName">
                
    <value>MyJmsConnectionFactory</value>
            
    </property>
            
    <property name="jndiTemplate">
                
    <ref local="jndiTemplate"></ref>
            
    </property>
        
    </bean>
        
        
    <!-- jmsTemplate 配置 -->
        
    <bean id="jmsTemplate"
            class
    ="org.springframework.jms.core.JmsTemplate">
            
    <property name="connectionFactory">
                
    <ref local="connectionFactory" />
            
    </property>
            
    <property name="defaultDestination">
                
    <ref local="destination" />
            
    </property>
        
    </bean>    
        
        
    <!-- JMS 消息發送者 配置-->
        
    <bean id="jmsSender"
            class
    ="com.heyang.sender.JmsSender">
            
    <property name="connectionFactory" ref="connectionFactory" />
            
    <property name="topic" ref="destination" />
        
    </bean>    

        
    <!-- JMS 消息監聽容器 -->
        
    <bean id="listenerContainer"
            class
    ="org.springframework.jms.listener.DefaultMessageListenerContainer">        
            
    <property name="connectionFactory" ref="connectionFactory" />
            
    <property name="concurrentConsumers" value="2" />
            
    <property name="destination" ref="destination" />
            
    <property name="messageListener" ref="messageListener" />
        
    </bean>
        
        
    <!-- Message Driven POJO (MDP 消息驅動POJO) -->
        
    <bean id="messageListener" class="com.heyang.receiver.JmsListener" />    
     
    </beans>

    消息發布者源碼:
    package com.heyang.sender;

    import java.io.File;

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

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.jms.core.JmsTemplate102;
    import org.springframework.jms.core.MessageCreator;

    public class JmsSender{
        
    private JmsTemplate jmsTemplate;

        
    private Topic topic;

        
    public void setConnectionFactory(ConnectionFactory cf) {
            
    this.jmsTemplate = new JmsTemplate102(cf, true);
        }

        
    public void setTopic(Topic queue) {
            
    this.topic = queue;
        }
        
        
    public void sendMsg(final String msg) {
            
    this.jmsTemplate.send(this.topic, new MessageCreator() {
                
    public Message createMessage(Session session) throws JMSException {
                    
    return session.createTextMessage(msg);
                }
            });
        }
        
        
    public static void main(String[] args) throws Exception{
            ApplicationContext appContext 
    = new ClassPathXmlApplicationContext("bean.xml");

            JmsSender jmsSender 
    = (JmsSender)appContext.getBean("jmsSender");        
            jmsSender.sendMsg(readProvinceMsgFromXMl(
    "msg.xml"));
            System.out.println(
    "消息發送完畢");
        }

        
    /**
         * 從XML文件中讀取文本
         * 
    @param xmlFile
         * 
    @throws DocumentException 
         
    */
        
    public static String readProvinceMsgFromXMl(String xmlFile) throws DocumentException{
            SAXReader reader
    =new SAXReader();
            Document document
    =reader.read(new File(xmlFile));
            Element root
    =document.getRootElement();
            
    return root.asXML();
        }
    }

    消息訂閱者源碼:
    package com.heyang.receiver;

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

    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;

    public class JmsListener implements MessageListener {
        
    public void onMessage(Message message) {
            
    if (message instanceof TextMessage) {
                
    try {
                    String msg
    =((TextMessage) message).getText();                
                    System.out.print(
    "已經收到消息:"+msg);
                
                    Document document
    =DocumentHelper.parseText(msg);
                    Element root
    =document.getRootElement();
                    
                    System.out.println(root.asXML());
                } 
    catch (Exception ex) {
                    
    throw new RuntimeException(ex);
                }
            } 
        }
    }

    posted on 2009-09-24 10:45 何楊 閱讀(1051) 評論(0)  編輯  收藏
    主站蜘蛛池模板: 色欲aⅴ亚洲情无码AV蜜桃| 久久精品国产亚洲AV无码娇色 | 久草视频在线免费| 国产精品国产亚洲精品看不卡| 黄色大片免费网站| 免费国产成人高清视频网站| 久久久久精品国产亚洲AV无码| av无码免费一区二区三区| 亚洲成在人线中文字幕| 国产男女爽爽爽爽爽免费视频| 亚洲免费网站在线观看| 一个人免费观看视频www| 亚洲欧美精品午睡沙发| 国产成人免费a在线视频色戒| 国产亚洲精品2021自在线| 亚洲精品高清在线| 99精品视频免费| 久久丫精品国产亚洲av| 可以免费看黄的网站| 亚洲另类自拍丝袜第五页| 亚洲精品高清在线| 性无码免费一区二区三区在线 | 95免费观看体验区视频| 亚洲网红精品大秀在线观看| 99国产精品永久免费视频| 亚洲色成人网站WWW永久四虎 | 亚洲av永久无码| 亚洲AⅤ永久无码精品AA| 久久精品无码专区免费| 亚洲最大成人网色| 最近2019中文字幕mv免费看| 国产成人亚洲精品91专区高清 | 亚洲精品无码日韩国产不卡av| 国产在线观看免费完整版中文版 | 在线观看免费人成视频色| 亚洲精品无码永久在线观看男男| 全亚洲最新黄色特级网站| 日本一卡精品视频免费| 国产精品亚洲综合久久| 国产精品亚洲产品一区二区三区 | 国产一区二区三区无码免费|