java - 如何从 JBoss 写入远程 JMS 队列

标签 java jms jboss7.x activemq

我正在使用 JBoss Wildfly,并且喜欢从 session Bean 在远程(非嵌入式)JMS 队列 (active-mq-5.9) 中生成消息。

我的 bean :

@Stateless
@ResourceAdapter("activemq-ra.rar")
public class FinancialLoggerBean implements FinancialLoggerRemote, ManagedBean {

    private static final Logger logger = Logger.getLogger(FinancialLoggerBean.class.getName());

    @Resource(lookup = "jboss/ConnectionFactory")
    private ConnectionFactory connectionFactory;

    @Resource(lookup = "jboss/queue/financialLogQueue")
    private Destination destination;

    private Connection connection;

    @EJB
    private FinancialLoggerBeanManager ejbManager;

    ...
}

我在网上找到了一些如何通过资源适配器配置 jboss 和 active-mq 之间的链接的示例。在我的 standalone.xml 中,我配置了这样的适配器:

<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
        <resource-adapters>
            <resource-adapter>
                    <archive>
                        activemq-rar.rar
                    </archive>
                    <transaction-support>XATransaction</transaction-support>
                    <config-property name="UseInboundSession">
                        false
                    </config-property>
                    <config-property name="ServerUrl">
                        failover:(tcp://127.0.0.1:61616)
                    </config-property>
                    <connection-definitions>
                        <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:jboss/ConnectionFactory" enabled="true" pool-name="ConnectionFactory">
                            <xa-pool>
                            <min-pool-size>10</min-pool-size>
                            <max-pool-size>100</max-pool-size>
                            <prefill>true</prefill>
                      </xa-pool>
                        </connection-definition>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/queue/financialLogQueue" use-java-context="true" pool-name="financialLogPool">
                            <config-property name="PhysicalName">
                                financialLogQueue
                            </config-property>
                        </admin-object>
                    </admin-objects>
                </resource-adapter>
        </resource-adapters>

但是资源无法链接到我的 bean。好像少了什么。

JBAS014775:    New missing/unsatisfied dependencies:
  service jboss.naming.context.java.comp."financiallogger-ear-1.0-SNAPSHOT"."financiallogger-ejb-1.0-SNAPSHOT".FinancialLoggerBean.env.jboss.ConnectionFactory (missing) dependents: [service jboss.naming.context.java.comp."financiallogger-ear-1.0-SNAPSHOT"."financiallogger-ejb-1.0-SNAPSHOT".FinancialLoggerBean.env."myBeans.FinancialLoggerBean".connectionFactory] 
  service jboss.naming.context.java.comp."financiallogger-ear-1.0-SNAPSHOT"."financiallogger-ejb-1.0-SNAPSHOT".FinancialLoggerBean.env.jboss.queue.financialLogQueue (missing) dependents: [service jboss.naming.context.java.comp."financiallogger-ear-1.0-SNAPSHOT"."financiallogger-ejb-1.0-SNAPSHOT".FinancialLoggerBean.env."myBeans.FinancialLoggerBean".destination] 

有什么提示吗?

谢谢,

米歇尔

最佳答案

看起来像是 JBoss 库管理中 MQ 模块的配置问题。

关于java - 如何从 JBoss 写入远程 JMS 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831578/

相关文章:

java - Gradle 复合构建。未找到项目。 includeBuild 不起作用?

java - JLS 如何指定术语 "abstract method"、 "concrete method"和 "default method"?

使用UnboundID LDAP SDK api的Java问题(调用带参数的方法)

java - JMS能否保证队列中的一条消息一次只能被一个receiver实例接收到?

java - JBoss:在 JBoss EAP 6 中将值绑定(bind)到 JNDI 类似于 JNDIBindingServiceMgr

java - 如何解密从服务器收到的字符串?

java - IBM MQ : Any way to get connection interruption notification?

java - 在运行 Jboss 时重新启动 JMS

jpa-2.0 - JPA2.0使用Jboss运行时库(hibernate)失败

java - 从 Jboss-as 7.1.1 中的 standalone.xml 外部化资源适配器配置