簡體   English   中英

入站JCA適配器的MDB偵聽器未在WildFly中啟動

[英]MDB Listener for inbound JCA adapter doesn't start in WildFly

是否有人設法在WildFly(9.0.2或10.0)中部署了偵聽獨立JCA適配器的MDB bean?

我剛剛創建了一個入站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,btw的規范支持)。 我通過在WAR存檔中添加特殊的專有描述符找到了解決方案:

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>

它解決了類加載的問題,並且允許我的WAR類看到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)。 沒有任何幫助。

我的適配器還實現了出站處理,並且按指定方式工作。

感謝您的任何建議。

是! 有一個特殊的描述符可以使它在WildFly中工作:

的jboss-ejb3.xml

<?xml version="1.1" encoding="UTF-8"?>
<jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
           xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:r="urn:resource-adapter-binding"
           xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee    http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
           version="3.1"
           impl-version="2.0">
    <assembly-descriptor>
        <r:resource-adapter-binding>
            <ejb-name>TestServiceConsumer</ejb-name>
            <r:resource-adapter-name>test.rar</r:resource-adapter-name>
        </r:resource-adapter-binding>
    </assembly-descriptor>
</jboss:ejb-jar>

但是如果沒有另一個,它是行不通的,應該將其放入RAR存檔並定義一些DEFAULT托管連接!

META-INF / ironjacamar.xml

<ironjacamar xmlns="http://www.ironjacamar.org/doc/schema"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.ironjacamar.org/doc/schema 
         http://www.ironjacamar.org/doc/schema/ironjacamar_1_1.xsd">

    <transaction-support>NoTransaction</transaction-support>

    <connection-definitions>
        <connection-definition class-name="foo.TestManagedConnectionFactory" jndi-name="java:/eis/TestConnectionFactory" pool-name="TestConnectionFactory">
        </connection-definition>
    </connection-definitions>

</ironjacamar>

如果有太多痛苦和奧秘的知識來使它們起作用,為什么我們需要所有這些J2EE規范?

就我而言,這些解決方案均無濟於事。

但是,我在他們整理的Red Hat網站上發現,我們需要查找對.rar或其jar部署的重復引用。

低並且看到我的一個pom文件同時引用了我的.rar文件及其.jar文件。 Jboss 6.4對此沒有問題,但是是的,Wildfly看起來更嚴格。 無論如何,我只是將它們的范圍更改為提供的范圍,一切對世界都是正確的。

<scope>provided</scope>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM