[英]Failed to link a MDB to an inbound resource adapter on Wildfly 10.x - deployment failed
[英]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.