ActiveMQ本身是開(kāi)源項(xiàng)目,所以采用ActiveMQ的項(xiàng)目往往也是以其他開(kāi)源軟件共同構(gòu)建,目前主流開(kāi)源應(yīng)用服務(wù)器有Boss,geronimo,JOnAs,而其中g(shù)eronimo 默認(rèn)的JMS Provider就是ActiveMQ,那我們就著重介紹ActiveMQ與JBoss,JOnAs的整合方案
本文參考了 Integrating Apache ActiveMQ with JBoss與JBoss Integration,再根據(jù)筆者實(shí)際整合經(jīng)驗(yàn)總結(jié)而成。
一.整合需要的環(huán)境.
jdk1.5
jboss-4.0.5.GA
activemq-ra-4.1.0-incubator.rar (在ActiveMQ 4.* lib\optional 目錄里面有對(duì)應(yīng)的ra的壓縮包)
開(kāi)始整合前請(qǐng)確保jboss能夠正確的啟動(dòng)起來(lái)。
二.整合步驟
1. 步驟一: 解壓activemq-rar-4.1.0-incubator.rar 到 jboss-4.0.5.GA\server\default\deploy\activemq-ra.rar (這個(gè)是目錄名字) 下面是activemq-rar.rar目錄下面的文件和子目錄,請(qǐng)注意紅色標(biāo)記的地方(后面會(huì)逐一說(shuō)明,整合的過(guò)程)
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個(gè)不同版本的spring會(huì)觸發(fā)一個(gè)exception的產(chǎn)生,https://issues.apache.org/activemq/browse/AMQ-1124, 而且為了以后能夠使用新的spring schema配置方式,我們這里會(huì)刪除spring-1.2.6.jar,保留spring-2.0.jar。(最新的snapshot version的ra已經(jīng)去掉了這個(gè)多余的spring-1.2.6.jar).
表示使用broker-config.xml來(lái)配置啟動(dòng)ActiveMQ.
1. 步驟一: 解壓activemq-rar-4.1.0-incubator.rar 到 jboss-4.0.5.GA\server\default\deploy\activemq-ra.rar (這個(gè)是目錄名字) 下面是activemq-rar.rar目錄下面的文件和子目錄,請(qǐng)注意紅色標(biāo)記的地方(后面會(huì)逐一說(shuō)明,整合的過(guò)程)
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個(gè)不同版本的spring會(huì)觸發(fā)一個(gè)exception的產(chǎn)生,https://issues.apache.org/activemq/browse/AMQ-1124, 而且為了以后能夠使用新的spring schema配置方式,我們這里會(huì)刪除spring-1.2.6.jar,保留spring-2.0.jar。(最新的snapshot version的ra已經(jīng)去掉了這個(gè)多余的spring-1.2.6.jar).
3.步驟三: 修改META-INF\ra.xml,讓JBoss使用broker-config.xml 作為默認(rèn)的配置文件配置borker. 修改下面的地方
改為:
表示使用broker-config.xml來(lái)配置啟動(dòng)ActiveMQ.
4.步驟四: 修改borker-config.xml,默認(rèn)的borker-config.xml會(huì)產(chǎn)生一個(gè)錯(cuò)誤,無(wú)論是我使用的版本還是最后的snapshot版本,默認(rèn)的borker-config.xml都會(huì)讓xbean-spring 2.7(snapshot 使用的是2.8)拋出exception.解決的辦法如下
將
改為
即可
5.步驟五: 將xbean-spring-2.7.jar (或者是2.8) 復(fù)制到j(luò)boss-4.0.5.GA\server\default\lib下面
三 使用整合完畢的ActiveMQ作為ds綁定到JBoss的JNDI服務(wù)。
編寫(xiě)jboss-4.0.5.GA\server\default\depoly\activemq-ds.xml
xml 代碼
啟動(dòng)JBoss.如果看見(jiàn)以下信息就表示ActiveMQ已經(jīng)成功啟動(dò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
[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
[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
......
四.驗(yàn)證ActiveMQ+JBoss
這里你可以使用簡(jiǎn)單的jms client連接到broker-config.xml里面的協(xié)議連接器上面,默認(rèn)的是tcp://localhost:61616
在后面我們會(huì)在此整合基礎(chǔ)上開(kāi)發(fā)Message Driver Bean和使用spring MDP 2種構(gòu)架 來(lái)驗(yàn)證本次ActiveMQ+JBoss的整合。