首页 > 解决方案 > TomEE:配置 AMQP JCA 资源适配器

问题描述

我正在尝试使用 JCA 资源适配器将 TomEE 中的当前 JMS 提供程序从 ActiveMQ 更改为 AMQP。(参见:https ://github.com/amqphub/amqp-10-resource-adapter )。

我成功地将 .rar 部署到 TomEE:

06-Jun-2019 16:03:39.485 INFO [main] org.apache.openejb.util.JarExtractor.extract Extracting jar: /usr/local/tomee/apps/resource-adapter-1.0.1-SNAPSHOT.rar
06-Jun-2019 16:03:39.524 INFO [main] org.apache.openejb.util.JarExtractor.extract Extracted path: /usr/local/tomee/apps/resource-adapter-1.0.1-SNAPSHOT
06-Jun-2019 16:03:40.066 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureApplication Configuring enterprise application: /usr/local/tomee/apps/resource-adapter-1.0.1-SNAPSHO
T.rar
06-Jun-2019 16:03:40.183 INFO [main] org.apache.openejb.config.OutputGeneratedDescriptors.writeRaXml Dumping Generated ra.xml to: /usr/local/tomee/temp/ra-1600877811006704454resource-adapter-1.
0.1-SNAPSHOT.xml
06-Jun-2019 16:03:40.264 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureService Configuring Service(id=resource-adapter-1.0.1-SNAPSHOTRA, type=Resource, provider-id=resourc
e-adapter-1.0.1-SNAPSHOTRA)
06-Jun-2019 16:03:40.266 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureService Configuring Service(id=resource-adapter-1.0.1-SNAPSHOT, type=Resource, provider-id=resource-
adapter-1.0.1-SNAPSHOT)
06-Jun-2019 16:03:40.267 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureService Configuring Service(id=resource-adapter-1.0.1-SNAPSHOT, type=Container, provider-id=Default
MDB Container)
06-Jun-2019 16:03:40.281 INFO [main] org.apache.openejb.config.AppInfoBuilder.build Enterprise application "/usr/local/tomee/apps/resource-adapter-1.0.1-SNAPSHOT.rar" loaded.

但是,当我将 TomEE 配置为使用资源适配器时(请参阅:http ://tomee.apache.org/changeing-jms-implementations.html ),我收到以下错误:

06-Jun-2019 19:16:03.870 SEVERE [main] org.apache.openejb.assembler.classic.Assembler.buildContainerSystem Application could not be deployed:  /usr/local/tomee/apps/simpleEJB-ear-1.0
 org.apache.openejb.OpenEJBException: Creating application failed: /usr/local/tomee/apps/simpleEJB-ear-1.0: Error deploying 'Listener1'.  Exception: class org.apache.openejb.OpenEJBException: Unable to create activation spec: ResourceAdapter is not of type: org.apache.activemq.ra.MessageResourceAdapter: Unable to create activation spec: ResourceAdapter is not of type: org.apache.activemq.ra.MessageResourceAdapter
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1096)
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:757)
    at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:635)
    at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:487)
    at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:150)
    at org.apache.openejb.OpenEJB.init(OpenEJB.java:307)

我的 tomee.xml 文件如下所示:

  <Resource id="MyJmsResourceAdapter" type="AmqpResourceAdapter" provider="com.wk.amqpra:ampqra">
      BrokerXmlConfig =
      ServerUrl = amqp://xxxxxxxx.servicebus.windows.net:5671?amqp.idleTimeout=120000&amp;amqp.traceFrames=true
      password  = ****************
      userName  = RootManageSharedAccessKey
  </Resource>

  <Resource id="ConnectionFactory" type="javax.jms.ConnectionFactory" provider="com.wk.amqpra:ConnectionFactory">
      ResourceAdapter = MyJmsResourceAdapter
  </Resource>

  <Container id="MyJmsMdbContainer" ctype="MESSAGE">
    ResourceAdapter = MyJmsResourceAdapter
  </Container>

我的服务-jar.xml:

 <ServiceProvider
          id="ampqra"
          service="Resource"
          types="AmqpResourceAdapter"
          class-name="org.jboss.resource.adapter.jms.JmsResourceAdapter">
  </ServiceProvider>
  <ServiceProvider
      id="ConnectionFactory"
      service="Resource"
      types="javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, javax.jms.TopicConnectionFactory, QueueConnectionFactory, TopicConnectionFactory"
      class-name="org.jboss.resource.adapter.jms.JmsManagedConnectionFactory">
          ConnectionFactoryJndiName
          ClientId
          ConnectionValidationEnabled
          ResourceAdapter
  </ServiceProvider>

为了让 TomEE 使用 AMQP JCA 资源适配器而不是 ActiveMQ,我缺少什么?任何帮助将不胜感激。

标签: jakarta-eejmsamqpazureservicebus

解决方案


我能够成功地将 TomEE 的 JMS 提供程序更改为与 Azure 服务总线一起使用。

这是我的 git 仓库:https ://github.com/jsstralko/tomee-jac


推荐阅读