Java 入站JCA适配器的MDB侦听器不';不要从野蝇开始

Java 入站JCA适配器的MDB侦听器不';不要从野蝇开始,java,wildfly,message-driven-bean,jca,Java,Wildfly,Message Driven Bean,Jca,是否有人设法在WildFly(9.0.2或10.0)中部署了一个MDBBean来监听独立的JCA适配器 我刚刚创建了一个入站JCA适配器(使用ironjacamar-1.2.6),并在WildFly上部署了它。像这样: @Activation(messageListeners = { foo.TestMessageListener.class }) public class TestActivationSpec implements ActivationSpec ... 接下来,我添加了一个简

是否有人设法在WildFly(9.0.2或10.0)中部署了一个MDBBean来监听独立的JCA适配器

我刚刚创建了一个入站JCA适配器(使用ironjacamar-1.2.6),并在WildFly上部署了它。像这样:

@Activation(messageListeners = { foo.TestMessageListener.class })
public class TestActivationSpec implements ActivationSpec
...
接下来,我添加了一个简单的连接(使用jboss cli):

直到现在都很简单。之后,我为适配器创建了带有目标使用者的WAR应用程序:

@MessageDriven(
    activationConfig = {
            @ActivationConfigProperty(propertyName = "someProperty",
                    propertyValue = "Hi there")}
)
@Vetoed
public class TestServiceConsumer implements TestMessageListener{
...
这是我的第一个麻烦。这场战争在部署期间没有看到TestMessageListener类(顺便说一句,缺少WildFly的规范支持)。我通过在我的WAR存档中添加一个特殊的专有描述符找到了一个解决方案:

META-INF/jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="deployment.test.rar" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>
所以,问题是为什么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>

TestServiceConsumer
test.rar
但如果没有另一个,它就无法工作,应该将其放入RAR归档并定义一些默认的托管连接

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规范

在我的情况下,这些解决方案都没有帮助

然而,我在红帽网站上发现,他们提到我们需要寻找对.rar或其jar部署的重复引用

低看,我的一个pom文件同时引用了我的.rar文件和它的.jar文件。JBoss6.4对此没有问题,但Wildfly看起来更严格。无论如何,我只是把他们的范围改为提供,世界上一切都好

<scope>provided</scope>
已提供

谢谢您!帮了大忙。入站jca适配器是否需要连接?你能分享它的来源吗?谢谢@vasquez!源代码完全由Ironjacamar生成。我只是在玩它。连接入站!!!你是对的!我没想过。当然,若归档文件中只有入站适配器,那个么我们在部署时并没有任何东西可以启动,WildFly将无法找到我们的侦听器!倒霉!我将在星期一检查。
<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>
<scope>provided</scope>