gpt4 book ai didi

java - 配置 WebLogic MDB 以监听外部 AMQ 服务器

转载 作者:行者123 更新时间:2023-12-01 04:13:45 27 4
gpt4 key购买 nike

我正在尝试在 WebLogic 10.3.5 上创建 MDB(EJB 3.0)。监听外部 AMQ 服务器上的队列。经过大量工作和教程的结合,我在 webLogic 上部署时遇到以下错误。

[EJB:015027]The Message-Driven EJB is transactional but JMS connection factory referenced by the JNDI name: ActiveMQXAConnectionFactory is not a JMS XA connection factory.

以下是我所做工作的简介:

我已将相应的库添加到我的 WLS 类路径中(遵循本教程 http://amadei.com.br/blog/index.php/connecting-weblogic-and-activemq ),并按照教程中的指示创建了相应的 JMS 模块。我最初使用了ActiveMQConnectionFactory,后来使用了ActiveMQXAConnectionFactory,我也忽略了jms。表示法只是将普通名称作为 testQueue。

然后创建一个具有以下结构的简单 MDB。我明确定义了“connectionFactoryJndiName”属性,因为否则它会假定未找到 WebLogic 连接工厂,然后引发错误。

@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"),
@ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "ActiveMQXAConnectionFactory")
},
mappedName = "testQueue")
public class ROMELReceiver implements MessageListener {

/**
* Default constructor.
*/
public ROMELReceiver() {
// TODO Auto-generated constructor stub
}

/**
* @see MessageListener#onMessage(Message)
*/
public void onMessage(Message message) {
System.out.println("Message received");
}

}

此时我遇到了上述错误。尽管我使用 ActiveMQXAConnectionFactory 而不是简单的 ActiveMQConnectionFactory,但 Web 逻辑服务器中的 JNDI 资源树显示 org.apache.activemq.ActiveMQConnectionFactory 作为我配置的连接工厂的类。

我错过了什么吗?或者这只是将 WebLogic 与 AMQ 连接的完全错误的方式?

提前致谢。

最佳答案

我知道已经晚了,但最近我不得不做同样的事情并遇到同样的错误。这篇文章对我有帮助:

https://community.oracle.com/thread/3903705

基本上,它表示在 weblogic 模块的外部服务器选项的 jndi 属性中添加一个新参数。

xa=true。

因为activemq默认不使用Xa连接。

关于java - 配置 WebLogic MDB 以监听外部 AMQ 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com