Jms 使用JCA资源适配器与ActiveMQ的WildFly集成

Jms 使用JCA资源适配器与ActiveMQ的WildFly集成,jms,wildfly,activemq,integration,Jms,Wildfly,Activemq,Integration,我正在尝试使用ActiveMQ JCA资源适配器将ActiveMQ 5.15.13与WildFly 21.0.1.Final集成。然而,我在做这件事的时候会出错。我能够将WildFly 9与ActiveMQ 5.10集成。 我得到以下错误: 2021-01-22 19:20:18,577 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 93) MSC000001: Failed to start service j

我正在尝试使用ActiveMQ JCA资源适配器将ActiveMQ 5.15.13与WildFly 21.0.1.Final集成。然而,我在做这件事的时候会出错。我能够将WildFly 9与ActiveMQ 5.10集成。 我得到以下错误:

2021-01-22 19:20:18,577 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 93) MSC000001: Failed to start service jboss.ra.deployer."activemq-rar-5.15.13.rar": org.jboss.msc.service.StartException in service jboss.ra.deployer."activemq-rar-5.15.13.rar": WFLYJCA0046: Failed to start RA deployment [activemq-rar-5.15.13.rar]
    at org.jboss.as.connector.services.resourceadapters.deployment.ResourceAdapterDeploymentService$1.run(ResourceAdapterDeploymentService.java:176)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1348)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: org.jboss.jca.deployers.common.DeployException: IJ020056: Deployment failed: file:/opt/apps/MerckContivoPilot/wildfly-21.0.1.Final/standalone/deployments/activemq-rar-5.15.13.rar/
    at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.createObjectsAndInjectValue(AbstractResourceAdapterDeployer.java:2058)
    at org.jboss.as.connector.services.resourceadapters.deployment.ResourceAdapterDeploymentService$WildFLyRaDeployer.doDeploy(ResourceAdapterDeploymentService.java:233)
    at org.jboss.as.connector.services.resourceadapters.deployment.ResourceAdapterDeploymentService.start(ResourceAdapterDeploymentService.java:126)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
    at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1363)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.jboss.jca.validator.ValidatorException: Severity: WARNING
Section: 20.7
Description: Invalid config-property-type for AdminObject.
Code: Class: org.apache.activemq.pool.XaPooledConnectionFactory Property: tmFromJndi Type: boolean

Severity: ERROR
Section: 13.4.2.2
Description: An ActivationSpec class must implement the ActivationSpec interface
Code: org.apache.activemq.ra.ActiveMQActivationSpec

Severity: ERROR
Section: 5.3.1
Description: A ResourceAdapter must implement the javax.resource.spi.ResourceAdapter interface.
Code: org.apache.activemq.ra.ActiveMQResourceAdapter

Severity: ERROR
Section: 6.5.3.2
Description: The class must implement the javax.resource.spi.ManagedConnectionFactory interface.
Code: org.apache.activemq.ra.ActiveMQManagedConnectionFactory
资源适配器配置

<subsystem xmlns="urn:jboss:domain:resource-adapters:6.0">
    <resource-adapters>
        <resource-adapter id="activemq-ra">
            <archive>activemq-rar-5.15.13.rar</archive>
            <transaction-support>XATransaction</transaction-support>
            <config-property name="ServerUrl">tcp://localhost:61616?soTimeout=20000&amp;connectionTimeout=10000</config-property>
            <config-property name="UserName">defaultUser</config-property>
            <config-property name="UseInboundSession">false</config-property>
            <config-property name="Password">defaultPassword</config-property>
            <connection-definitions>
                <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/ActiveMQ/QueueConnectionFactory" enabled="true" use-java-context="true" pool-name="ActiveMQ/QueueConnectionFactory" use-ccm="true">
                    <xa-pool>
                        <min-pool-size>1</min-pool-size>
                        <max-pool-size>200</max-pool-size>
                    </xa-pool>
                    <timeout>
                        <blocking-timeout-millis>30000</blocking-timeout-millis>
                        <idle-timeout-minutes>5</idle-timeout-minutes>
                    </timeout>
                </connection-definition>
            </connection-definitions>
            <admin-objects>
                <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/queue/XMLPublishQueue" enabled="true" use-java-context="true" pool-name="XMLPublishQueue">
                    <config-property name="PhysicalName">XMLPublishQueue</config-property>
                </admin-object>
                <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/queue/SupportTasksQueue" enabled="true" use-java-context="true" pool-name="SupportTasksQueue">
                    <config-property name="PhysicalName">SupportTasksQueue</config-property>
                </admin-object>
            </admin-objects>
        </resource-adapter>
    </resource-adapters>
</subsystem>

通过遵循以下指南,尝试了两种方法(更新rar和不更新rar)

更新:当我通过ee子系统下的“全局模块”部分添加第三方JAR时,问题就开始了。我正在添加JavaEEAPI jar


任何帮助/建议都将不胜感激。

我将ActiveMQ 5.13.13 JCA资源适配器部署到Wildfly 21.0.1.Final,但我没有看到与您看到的相同的日志记录。一切似乎都很好。以下是我所做的:

  • 下载并解压缩
  • 下载并将其复制到
    standalone/deployments
  • 将此添加到
    standalone/configuration/standalone full.xml
    
    activemq-rar-5.15.13.rar
    X交易
    tcp://localhost:61616?soTimeout=20000&connectionTimeout=10000
    默认用户
    假的
    默认密码
    1.
    200
    30000
    5.
    XMLPublishQueue
    SupportTasksQueue
    
  • 更新了
    ee
    子系统的
    默认绑定
    元素中的
    jms连接工厂
    属性,以使用
    java:/ActiveMQ/QueueConnectionFactory
    
    
  • ejb3
    子系统的
    mdb
    /
    resource adapter ref
    元素的
    resource adapter name
    属性更新为
    ${ejb。资源适配器名称:activemq-rar-5}
    
    
  • 使用
    /standalone.sh-c standalone full.xml启动了WildFly

  • 鉴于所有这些都正常工作,我想说您的问题是您的全局模块,特别是因为它包括JavaEEAPI类。应用程序JAR和库JAR不应包括Java/Jakarta EE API类。EE服务器(如WildFly)提供所有这些功能。如果您(或其他人)提供了自己的,那么这将导致类加载问题,而这反过来又会导致许多其他奇怪的问题。重申一下,您绝对没有理由将Java/Jakarta EE API类与部署在服务器上的应用程序或库打包。

    @JustinBertram使用资源适配器配置更新了我的帖子。尝试直接部署原始rar,也尝试更新ra.xml中的ServerUrl,并部署重新打包的rar文件传输。您是否从同一位置下载了资源适配器?我还能够在不做任何更改的情况下进行部署。但是我们不需要将ee子系统下的默认jms连接工厂=“java:jboss/DefaultJMSConnectionFactory”更新为“java:/ActiveMQ/QueueConnectionFactory”。当我更新这篇文章时,我得到了上面所有的错误。我更新了我的答案以回应你的评论。希望有帮助!您是否正在更改任何其他配置?您是否部署了其他任何东西(例如MDB)?这些第三方JAR是否包含任何JavaEEAPI类?