国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
博客開張:用Spring ActiveMQ Jencks開發(fā)消息驅(qū)動POJO-Jamsa ...
2006-10-29
 XFire1.1-all.jar有內(nèi)存泄漏 ...  |  

關鍵字:   JMS    

我近段的一個應用中需要消息驅(qū)動POJO。
最近也聽說Spring 2.0開始支持消息驅(qū)動POJO了,但我的應用使用的Spring1.2。
從網(wǎng)上找了一些文章看來都比較舊了,并且近段ActiveMQ處于Apache的孵化器中,包的結構也有些改變,原來的ActiveMQ中的JCA容器部分也從ActiveMQ中獨立也來成了Jencks項目。
后來參考這些文章和Jencks官網(wǎng)上的說明成功實現(xiàn)了消息驅(qū)動POJO。
下面記錄了我配置的過程:

     

  1. 搞定相依賴的包。
    a.Spring相關的一些包,這部分就不再啰嗦了。
    b.ActiveMQ相關的包
    activemq-ra-4.01
    concurrent-1.3.4
    incubator-activemq-4.0.1
    c.JCA容器
    jencks-1.3-all

     

     

  2. 服務端配置
    代碼
    1. <bean id="helloBean" class="mdp.demo.HelloBean" />  
    2.   
    3.     <bean id="jmsTransactionManager"  
    4.         class="org.jencks.factory.TransactionManagerFactoryBean" />  
    5.   
    6.     <bean id="activeMQContainer" class="org.jencks.JCAContainer">  
    7.         <property name="bootstrapContext" >  
    8.             <bean id="bootstrapContext" class="org.jencks.factory.BootstrapContextFactoryBean">  
    9.                 <property name="transactionManager" ref="jmsTransactionManager"/>  
    10.             </bean>  
    11.         </property>  
    12.            
    13.         <property name="resourceAdapter">  
    14.             <bean id="activeMQResourceAdapter"  
    15.                 class="org.apache.activemq.ra.ActiveMQResourceAdapter">  
    16.                 <property name="serverUrl"  
    17.                     value="tcp://localhost:61616" />  
    18.             </bean>  
    19.         </property>  
    20.     </bean>  
    21.   
    22.     <bean id="HelloMDP" class="org.jencks.JCAConnector">  
    23.         <property name="jcaContainer" ref="activeMQContainer" />  
    24.         <property name="transactionManager" ref="jmsTransactionManager" />  
    25.         <property name="activationSpec">  
    26.             <bean  
    27.                 class="org.apache.activemq.ra.ActiveMQActivationSpec">  
    28.                 <property name="destination" value="Hello.Queue" />  
    29.                 <property name="destinationType"  
    30.                     value="javax.jms.Queue" />  
    31.             </bean>  
    32.         </property>  
    33.         <property name="ref" value="helloBean" />  
    34.     </bean>  

     

     

  3. 開發(fā)HelloBean
    代碼
    1. package mdp.demo;   
    2.   
    3. import javax.jms.JMSException;   
    4. import javax.jms.Message;   
    5. import javax.jms.MessageListener;   
    6.   
    7. public class HelloBean implements MessageListener {   
    8.   
    9.     public void onMessage(Message msg) {   
    10.         try {   
    11.             String name = msg.getStringProperty("name");   
    12.             if (name == null) {   
    13.                 name = "World";   
    14.             }   
    15.   
    16.             System.out.println("Hello " + name + "!");   
    17.         } catch (JMSException e) {   
    18.             e.printStackTrace();   
    19.         }   
    20.   
    21.     }   
    22.   
    23. }   
    24.   

     

     

  4. 客戶端配置,這里直接使用Spring的JmsTemplate
    代碼
    1. <bean id="jmsTemplate"  
    2.         class="org.springframework.jms.core.JmsTemplate">  
    3.         <property name="defaultDestinationName" value="Hello.Queue" />  
    4.         <property name="connectionFactory" ref="connectionFactory" />  
    5.     </bean>  
    6. <bean id="connectionFactory"  
    7.         class="org.apache.activemq.ActiveMQConnectionFactory">  
    8.         <property name="brokerURL" value="tcp://localhost:61616" />  
    9.     </bean>  

     

     

  5. 客戶端示例程序
    代碼
    1. package mdp.demo;   
    2.   
    3. import javax.jms.JMSException;   
    4. import javax.jms.MapMessage;   
    5. import javax.jms.Message;   
    6. import javax.jms.Session;   
    7.   
    8. import org.springframework.context.ApplicationContext;   
    9. import org.springframework.context.support.ClassPathXmlApplicationContext;   
    10. import org.springframework.jms.core.JmsTemplate;   
    11. import org.springframework.jms.core.MessageCreator;   
    12.   
    13. public class MDPClient {   
    14.     public static void main(String[] args) {   
    15.         ApplicationContext ctx = new ClassPathXmlApplicationContext(   
    16.                 "spring-client.xml");   
    17.   
    18.         JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");   
    19.         template.setDefaultDestinationName("Hello.Queue");   
    20.         template.send(new MessageCreator() {   
    21.             public Message createMessage(Session session) throws JMSException {   
    22.                 MapMessage message = session.createMapMessage();   
    23.                 message.setStringProperty("name""消息驅(qū)動POJO");   
    24.                 return message;   
    25.             }   
    26.         });   
    27.            
    28.            
    29.     }   
    30. }   

     

    上面的示例代碼實現(xiàn)了消息驅(qū)動POJO,但是POJO類仍需實現(xiàn)MessageListener接口。
    上面的配置也不支持XA事務,Jencks官網(wǎng)上有說明,但我沒有配置成功(Hibernate和JMS)。有哪位兄弟配置成功請告知,謝謝。

 

最后更新:2006-11-09 13:13
14:48  |   永久鏈接  |   瀏覽 (2282)  |   評論 (4)  |    收藏  |   Java  |  
評論    共 4 條 發(fā)表評論
leidongduo     2006-11-08 18:37

你說的“服務器配置”的配置文件是ActiveMQ服務器的activemq.xml嗎?應該不是吧,你說的這個配置文件應該是個spring的配置文件吧?

這樣的話,這個spring配置文件應該放在工程的什么位置呢?這個配置文件的內(nèi)容中并沒有提到ActiveMq broker的信息,應該怎樣建立這個jenks的配置文件和ActiveMQ 服務器的信息呢?

多謝回復

Jamsa     2006-11-09 08:41

我的服務端是一個J2EE應用,配置指的就是Spring的配置文件,這里沒有使用activemq.xml來配置。
客戶端是一個用來做測試的Java程序(配置文件是另一個Spring配置文件),只是發(fā)送一下消息到上面配置的

代碼
  1. <property name="destination" value="Hello.Queue" />    

這個隊列里。

 

YuLimin     2006-11-19 21:56

1、可以直接啟動ActiveMQ做為JMS服務端;
2、可以同JVM一起啟動ActiveMQ來做服務端進行測試。

skiter     2007-03-02 14:47

照上面配好一切正常,但是我重啟activeMQ服務器,helloBean就不能接受到消息,我在jconsole里面看到隊列里受到消息了,就是helleBean里取不到,不知道怎么回事?

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
activemq spring jencks實現(xiàn)異步數(shù)據(jù)傳輸
JMS在Spring框架下的應用
Spring整合JMS(消息中間件)
Activemq+spring的第一個程序(入門程序--內(nèi)嵌Broker--消息隊列)
手把手教你如何玩轉(zhuǎn)消息中間件(ActiveMQ)
Spring與ActiveMQ整合(多線程并發(fā)發(fā)送與接收消息)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服