Jms 使用JCA资源适配器与ActiveMQ的WildFly集成
我正在尝试使用ActiveMQ JCA资源适配器将ActiveMQ 5.15.13与WildFly 21.0.1.Final集成。然而,我在做这件事的时候会出错。我能够将WildFly 9与ActiveMQ 5.10集成。 我得到以下错误: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
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&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类?