【发布时间】:2013-11-07 11:46:22
【问题描述】:
我正在尝试在 WebLogic 10.3.5 上创建一个 MDB(EJB 3.0)。侦听外部 AMQ 服务器上的队列。经过大量工作和教程组合后,在 webLogic 上部署时出现以下错误。
[EJB:015027]消息驱动的 EJB 是事务性的,但 JNDI 名称引用的 JMS 连接工厂:ActiveMQXAConnectionFactory 不是 JMS XA 连接工厂。
以下是我所做工作的简要说明:
我已将相应的库添加到我的 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 连接起来的一种完全错误的方式?
提前致谢。
【问题讨论】:
-
你使用的是什么版本的 ActiveMQ?
-
我正在使用 ActiveMQ 5.8
标签: java jms activemq weblogic11g message-driven-bean