hk2000c技術(shù)專欄

          技術(shù)源于哲學(xué),哲學(xué)來源于生活 關(guān)心生活,關(guān)注健康,關(guān)心他人

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            111 隨筆 :: 1 文章 :: 28 評論 :: 0 Trackbacks
          關(guān)鍵字:   ActiveMQ    

                ActiveMQ本身是開源項目,所以采用ActiveMQ的項目往往也是以其他開源軟件共同構(gòu)建,目前主流開源應(yīng)用服務(wù)器有Boss,geronimo,JOnAs,而其中g(shù)eronimo 默認的JMS Provider就是ActiveMQ,那我們就著重介紹ActiveMQ與JBoss,JOnAs的整合方案

          本文參考了 Integrating Apache ActiveMQ with JBossJBoss Integration,再根據(jù)筆者實際整合經(jīng)驗總結(jié)而成。

           一.整合需要的環(huán)境.
                        jdk1.5
                        jboss-4.0.5.GA
                        activemq-ra-4.1.0-incubator.rar  (在ActiveMQ 4.*  lib\optional 目錄里面有對應(yīng)的ra的壓縮包)
             開始整合前請確保jboss能夠正確的啟動起來。

                       二.整合步驟

                        1. 步驟一: 解壓activemq-rar-4.1.0-incubator.rar 到 jboss-4.0.5.GA\server\default\deploy\activemq-ra.rar (這個是目錄名字) 下面是activemq-rar.rar目錄下面的文件和子目錄,請注意紅色標記的地方(后面會逐一說明,整合的過程)

                        activeio-core-3.0.0-incubator.jar
                        activemq-core-4.1.0-incubator.jar
                        activemq-ra-4.1.0-incubator.jar
                        backport-util-concurrent-2.1.jar
                        commons-logging-1.0.3.jar
                        derby-10.1.1.0.jar
                        geronimo-j2ee-management_1.0_spec-1.0.jar
                        spring-2.0.jar
                        spring-1.2.6.jar
                        xbean-spring-2.7.jar
                        broker-config.xml
                        META-INF 
           2.步驟二. 刪除多余的spring-1.2.6.jar,由于4.1.0的ra里面包含了2個不同版本的spring會觸發(fā)一個exception的產(chǎn)生,https://issues.apache.org/activemq/browse/AMQ-1124, 而且為了以后能夠使用新的spring schema配置方式,我們這里會刪除spring-1.2.6.jar,保留spring-2.0.jar。(最新的snapshot version的ra已經(jīng)去掉了這個多余的spring-1.2.6.jar).

                         3.步驟三: 修改META-INF\ra.xml,讓JBoss使用broker-config.xml 作為默認的配置文件配置borker. 修改下面的地方

          1. <config-property-value>config-property-value>              
          2. <!--  <config-property-value>xbean:broker-config.xml</config-property-value>-->  

                改為:

          1. <!-- <config-property-value></config-property-value> -->  
          2. <config-property-value>xbean:broker-config.xmlconfig-property-value>  

              表示使用broker-config.xml來配置啟動ActiveMQ.
           
                           4.步驟四: 修改borker-config.xml,默認的borker-config.xml會產(chǎn)生一個錯誤,無論是我使用的版本還是最后的snapshot版本,默認的borker-config.xml都會讓xbean-spring 2.7(snapshot 使用的是2.8)拋出exception.解決的辦法如下
                 將        
          1. <beans xmlns="http://activemq.org/config/1.0">  
          2.           <broker useJmx="true" >    
               
               改為
           
          1. <beans>  
          2. <broker useJmx="true" xmlns="http://activemq.org/config/1.0">  
           
             即可
                 
                        5.步驟五: 將xbean-spring-2.7.jar (或者是2.8) 復(fù)制到j(luò)boss-4.0.5.GA\server\default\lib下面
           
                    三 使用整合完畢的ActiveMQ作為ds綁定到JBoss的JNDI服務(wù)。
                          編寫jboss-4.0.5.GA\server\default\depoly\activemq-ds.xml
          xml 代碼
          1. <?xml version="1.0" encoding="UTF-8"?>  
          2. <!DOCTYPE connection-factories   
          3.     PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"   
          4.     "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">  
          5.   
          6. <connection-factories>  
          7.    <tx-connection-factory>  
          8.       <jndi-name>activemq/QueueConnectionFactory</jndi-name>  
          9.       <xa-transaction/>  
          10.       <track-connection-by-tx/>  
          11.       <rar-name>activemq-ra.rar</rar-name>  
          12.       <connection-definition>javax.jms.QueueConnectionFactory</connection-definition>  
          13.       <ServerUrl>tcp://localhost:61616</ServerUrl>  
          14.       <min-pool-size>1</min-pool-size>  
          15.       <max-pool-size>200</max-pool-size>  
          16.       <blocking-timeout-millis>30000</blocking-timeout-millis>  
          17.       <idle-timeout-minutes>3</idle-timeout-minutes>  
          18.    </tx-connection-factory>  
          19.   
          20.    <tx-connection-factory>  
          21.       <jndi-name>activemq/TopicConnectionFactory</jndi-name>  
          22.       <xa-transaction/>  
          23.       <track-connection-by-tx/>  
          24.       <rar-name>activemq-ra.rar</rar-name>  
          25.       <connection-definition>javax.jms.TopicConnectionFactory</connection-definition>  
          26.       <ServerUrl>tcp://localhost:61616</ServerUrl>  
          27.       <min-pool-size>1</min-pool-size>  
          28.       <max-pool-size>200</max-pool-size>  
          29.       <blocking-timeout-millis>30000</blocking-timeout-millis>  
          30.       <idle-timeout-minutes>3</idle-timeout-minutes>  
          31.    </tx-connection-factory>  
          32.       
          33.    <mbean code="org.jboss.resource.deployment.AdminObject" name="activemq.queue:name=outboundQueue">  
          34.       <attribute name="JNDIName">activemq/queue/outbound</attribute>  
          35.       <depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name=&apos;activemq-ra.rar&apos;</depends>  
          36.       <attribute name="Type">javax.jms.Queue</attribute>  
          37.       <attribute name="Properties">PhysicalName=queue.outbound</attribute>  
          38.    </mbean>  
          39.   
          40.    <mbean code="org.jboss.resource.deployment.AdminObject" name="activemq.topic:name=inboundTopic">  
          41.       <attribute name="JNDIName">activemq/topic/inbound</attribute>  
          42.       <depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name=&apos;activemq-ra.rar&apos;</depends>  
          43.       <attribute name="Type">javax.jms.Topic</attribute>  
          44.       <attribute name="Properties">PhysicalName=topic.inbound</attribute>  
          45.    </mbean>  
          46.   
          47. </connection-factories>  
                         
                         啟動JBoss.如果看見以下信息就表示ActiveMQ已經(jīng)成功啟動,并且使用上面的ds配置文件成功地將topic/queue綁定到了JNDI服務(wù)上。
                        ......
                        [TransportConnector] Connector tcp://localhost:61616 Started
                        [NetworkConnector] Network Connector bridge Started
                        [BrokerService] ActiveMQ JMS Message Broker (localhost, ID:MyNoteBook-2165-1173250880171-1:0) started
                        ......
                        [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=activemq/QueueConnectionFactory' to JNDI name 'java:activemq/QueueConnectionFactory'
                        [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=activemq/TopicConnectionFactory' to JNDI name 'java:activemq/TopicConnectionFactory'
                          [AdminObject] Bound admin object 'org.apache.activemq.command.ActiveMQQueue' at 'activemq/queue/outbound'
                          [AdminObject] Bound admin object 'org.apache.activemq.command.ActiveMQTopic' at 'activemq/topic/inbound
                          ......
                        
                       四.驗證ActiveMQ+JBoss
                       這里你可以使用簡單的jms  client連接到broker-config.xml里面的協(xié)議連接器上面,默認的是tcp://localhost:61616
                       在后面我們會在此整合基礎(chǔ)上開發(fā)Message Driver Bean和使用spring MDP 2種構(gòu)架 來驗證本次ActiveMQ+JBoss的整合。
          posted on 2007-11-16 17:06 hk2000c 閱讀(600) 評論(0)  編輯  收藏 所屬分類: JMS
          主站蜘蛛池模板: 沙湾县| 盐边县| 瓦房店市| 咸阳市| 扬中市| 西吉县| 库车县| 莎车县| 枣庄市| 青河县| 涿州市| 澳门| 天柱县| 丹阳市| 蓬溪县| 大足县| 芷江| 故城县| 惠水县| 海丰县| 宁波市| 常州市| 瓦房店市| 浑源县| 偃师市| 卢湾区| 望城县| 体育| 哈尔滨市| 巫溪县| 治多县| 大兴区| 安化县| 白朗县| 青铜峡市| 清原| 翁牛特旗| 梨树县| 栾城县| 灯塔市| 鹿泉市|