有人是否設法在WildFly(9.0.2或10.0)中部署偵聽獨立JCA適配器的MDB bean?入站JCA適配器的MDB偵聽器無法在WildFly中啓動
我剛剛創建了一個入站JCA適配器(使用ironjacamar-1.2.6)並將它部署在WildFly上。就像這樣:
@Activation(messageListeners = { foo.TestMessageListener.class })
public class TestActivationSpec implements ActivationSpec
...
接下來,我添加了一個簡單的連接(使用JBoss-CLI):
/profile=full-ha/subsystem=resource-adapters/resource-adapter=testRA:add(archive=test.rar,transaction-support=NoTransaction)
/profile=full-ha/subsystem=resource-adapters/resource-adapter=testRA/connection-definitions=TestManagedConnectionFactory:add(class-name=foo.TestManagedConnectionFactory,jndi-name=java:/eis/TestConnectionFactory_ha)
很簡單至今。在那之後,我創建了一個目標消費者的適配器WAR應用:
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "someProperty",
propertyValue = "Hi there")}
)
@Vetoed
public class TestServiceConsumer implements TestMessageListener{
...
在這裏,我得到了我的第一個麻煩。此WAR在部署期間看不到TestMessageListener類(缺少WildFly的規範支持,順便說一下)。我發現了一個解決方案加入了特殊的專有描述成我的抗戰檔案:
META-INF/jboss的部署,structure.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.test.rar" />
</dependencies>
</deployment>
</jboss-deployment-structure>
它解決問題與類加載和我的抗戰類成爲允許看到RAR接口。但現在我看到其他部署問題:
java.lang.IllegalStateException: WFLYEJB0383: No message listener of type foo.TestMessageListener found in resource adapter activemq-ra
所以,問題是爲什麼WildFly看上去只有到自己的RA偵聽器接口,而不是到我?有沒有其他具體的描述符來解決這個問題?
需要說的是,我已經玩過將ra.xml描述符添加到RAR存檔中,添加了@ActivationConfigProperty來指定確切的RA連接工廠(destinationLookup和connectionFactoryLookup)。沒什麼幫助。
我的適配器也實現了一個出站處理,它按照指定的方式工作。
感謝您的任何建議。
謝謝!很好的幫助。入站jca適配器需要連接嗎?你能分享它的來源嗎? – vasquez
謝謝@vasquez!源代碼完全由Ironjacamar生成。我只是玩了它。入站連接!你是對的!我沒有想過。當然,如果存檔中只有入站適配器,那麼在部署時我們沒有任何東西可以啓動,WildFly將無法找到我們的監聽器!拉屎!我會在星期一檢查它。 –