当前位置: 首页 > 知识库问答 >
问题:

配置WebLogic MDB以侦听外部AMQ服务器

姬翰林
2023-03-14

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

[EJB:015027]消息驱动的EJB是事务性的,但JNDI名称ActiveMQXAConnectionFactory引用的JMS连接工厂不是JMS XA连接工厂。

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

我已经将相应的库添加到我的WLS类路径中(遵循本教程http://amadei.com.br/blog/index.php/connecting-weblogic-and-activemq),并且我已经创建了相应的JMS模块,如教程中所示。我最初使用ActiveMQConnectionFactory,后来使用ActiveMQXAConnectionFactory,我也忽略了jm。符号,只是将普通名称作为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 logic server中的JNDI资源树显示了org。阿帕奇。activemq。ActiveMQConnectionFactory作为我配置的连接工厂的类。

我错过了什么吗?还是这只是连接带有AMQ的WebLogic的完全错误的方式?

提前谢谢。

共有1个答案

钱运浩
2023-03-14

我知道现在很晚了,但最近我不得不做同样的事情,遇到了同样的错误。这篇文章帮助了我:

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

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

xa=真。

因为ActiveMQ默认情况下不使用Xa连接。

 类似资料:
  • 要运行Kafka,需要在文件。有两种设置我不理解。 有人可以解释侦听器和广告侦听器属性之间的区别吗? 留档说: 侦听器:套接字服务器侦听的地址。 和 advertised.listeners:主机名和端口代理将向生产者和消费者做广告。 我什么时候必须使用哪个设置?

  • 我有一个关于正确配置kafka侦听器属性的问题-侦听器和advertised.listers。 在我的配置中,我设置了以下道具: 客户端使用 进行连接。我是否需要在侦听器和广告侦听器中具有相同的值。这里 是指向运行 kafka 代理的主机的 dns 记录。 在什么情况下,我希望它们保持不变和不同? 谢谢!

  • 我想使用2个侦听器配置Kafka身份验证(现在只需要身份验证而无需加密): 一个用于与PLAINTEXT安全进行经纪间私人通信 一个用于消费者/生产者与SASL_PLAINTEXT和SCRAM-SHA-256的公共通信 我有一个只有一个代理(用于测试目的)的Kafka集群和一个有两个节点的Zookeeper集群 我所做的步骤是: 在动物园管理员上创建“admin”和“test user”用户 我总

  • 我正在尝试在服务中使用导入。yaml将一些服务定义移动到单独的文件中。在这里你可以在symfony doc中找到这个。 但是当我试图这样做的时候,我得到了一个错误: 无法自动连线服务“App\Domain\Test\Test”:方法“\uu construct()”的参数“$param”必须具有类型提示或显式给定值。 以下是我的配置文件: 和 这里是服务: 如果我将参数和服务移动到服务中,这将很好

  • 问题内容: 哪种方法更好,直接像这样执行 或通常在类内部声明? 问题答案: 在第二段代码中,必须在调用接口的方法之前先调用属性。 在第一段代码中,您可以直接访问接口方法。 因此,如果您知道每个方法调用都会花费cpu时间,则直接在类中实现它而不是将其作为属性将是有益的。 在这种情况下,您有1个引用,可以使用该引用访问LocationListener的方法 在这种情况下,您有2个引用,一个是 Back

  • 我有一个Red Hat AMQ(基于ActiveMQ Artemis)代理,我希望使用持久订阅(或等效)特性,这样我将有多个OpenWire JMS订阅者订阅我们的应用程序的事件,这些事件将可靠地交付给他们。 我想预先配置订户,这样就可以省去我在初始应用程序启动时的麻烦。我希望避免初始应用程序启动的情况,即在持久订阅服务器执行初始订阅之前,主应用程序开始运行并发布事件。 有什么方法可以预先配置持久