2013-09-26 43 views
2

我想弄清楚如何在JBoss 7中部署資源適配器激活。基本上,我希望能夠打包和部署完整的應用程序,而無需修改基本服務器配置,部分原因是我想引導使用Arquillian進行測試,也是因爲我希望能夠將我的軟件包部署到可能無法修改基本服務器配置的環境中。如何在JBoss 7中部署資源適配器激活?

這是我現在的位置。我創建了一個包含active-mq rar(也在application.xml中配置)的EAR。這耳朵本身使用Maven耳塞和jboss-as-maven插件來構建和部署。

然而,爲了激活RAR,我已經能夠想出的唯一辦法就是破解RAR文件本身並添加ironjacamar.xml成RAR的META-INF目錄。但爲了做到這一點,我不得不在我的Maven回購中破解我不想做的事情。

我試圖讓maven在我的maven pom的打包階段添加ironjacamar.xml,但這也有點破解,我無法讓它工作。 (注意自我:檢查Deployment Overlays

我也想過腳本添加連接工廠使用JBoss-CLI的,但該文檔明確指出是用於創建工廠建於黃蜂,MQ服務器這不是我的目標,並且在服務器中交換默認的JMS實現需要在服務器的配置中進行一些重大手術。

我看了看,雖然所有的快速啓動項目,並觀察部署結構的種種,雖然-jms.xml-ds.xml文件包中包含的,但他們還專門針對大黃蜂,MQ和JDBC分別。 (我希望部署者可能支持-rar.xml等)。

我能想到的,我不知道是否支持它的唯一辦法了,是我的包中定義一個子系統部署。有這樣的事嗎?

===== UPDATE =====

我嘗試添加一個CLI覆蓋更新(因爲我會使用maven的JBoss應用服務器的插件),但它沒有任何效果。

deployment-overlay add --name=rarActivation --content=META-INF/ironjacamar.xml=\..\container\src\main\resources\ironjacamar.xml --deployments=activemq-rar.rar --redeploy-affected 

回答

4

那麼,在沒有任何其他答案的情況下,這是我提出的解決方案。這有點破綻,但它與Active MQ和WebSphere MQ完美配合。前提是我爲每個要連接的JMS系統部署2個不同的RAR。一個是我從Maven倉庫中檢索的未觸及的xxx.rar文件。第二個是我的「配置RAR」,其中包含原始rar的ra.xml的副本,然後是一個ironjacamar.xml配置文件。這兩個都放在配置文件夾的META-INF文件夾中。

對於每個給定供應商RAR,可使用rar-info.sh其被包括在所述鐵Jacamar 1.1下載來生成ironjacamar.xml文件。該程序在標題爲10.1. Resource adapter information tool int user guide的部分中描述。

使用的ActiveMQ 5.8.0爲例:

生成ironjacamar.xmlrar-info.sh輸出的全部輸出萃取。內的文件,它的標題是:

Deployment Descriptor: 
---------------------- 

文件的提取部分,將成爲該頭之後ironjacamar.xml起始和< /資源適配器>結束。

以下編輯應適用:

  1. 刪除開始<resource-adapters><resource-adapter>標籤,並用<ironjacamar.xml>打開標籤替換。
  2. 刪除開頭<archive>標記。
  3. 取消關閉標記</resource-adapter></resource-adapters>標記並替換爲</ironjacamar.xml>關閉標記。

每種連接類型(連接,隊列和主題)都有連接工廠的樣例定義,其中包含JBoss將綁定工廠的JNDI名稱。如果您認爲合適,請編輯這些。我只需要連接工廠,因此我編輯了JNDI名稱並刪除了其他兩個定義。

目標引用有樣本定義(對於ActiveMQ幾乎不需要,但對其他人有用)。一個用於一個隊列,一個用於一個話題。如果您認爲合適,請編輯這些。

Maven的依賴關係:

<dependency> 
    <groupId>org.apache.activemq</groupId> 
    <artifactId>activemq-rar</artifactId> 
    <version>5.8.0</version> 
    <type>rar</type> 
</dependency> 

能展開的EAR看起來是這樣的:

sample.ear 
    META-INF 
     application.xml 
    activemq-rar.rar (file) 
    activemq-config.rar (directory) 
     ra.xml (extracted from activemq-rar.rar or generated) 
     ironjacamar.xml (generated, then edited) 

實際上,ra.xml中可以從 「實」 的rar中提取,但它也產生在IronJacamar rar-info.sh輸出文件,所以從任一。

application.ear則是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6"> 
    <display-name>JBoss7Sample Ear</display-name> 
    <!-- Sample for WebSphereMQ 
    <module><connector>wmq.jmsra.rar</connector></module> 
    <module><connector>wmq-config.rar</connector></module> 
    --> 
    <module><connector>activemq-rar.rar</connector></module> 
    <module><connector>amq-config.rar</connector></module> 
</application> 

再次強調,這(其實很簡單),解決對我很重要,因爲這與開頭的部署過程「編輯服務器文件名爲.....或「在管理控制檯.....」是我所針對的環境中的非啓動器,我需要假設不能訪問vanilla JBoss 7(EAP 6.1)內部目錄,也不能訪問控制檯,就像人們可能在Jenkins構建或類似的部署結束時那樣。(更不用說哪個,編輯文件以添加部署本身是非啓動器)。

這個解決方法和其他可以在這個github project更詳細的查看,這是專門設置爲共享一些我發現很難來的工作配置。

P.S.由於這是唯一提供的答案,我向自己頒發正確的答案,但我會放棄以獲得更好的答案。