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

添加ActiveMQ作为JMS提供程序、主题连接工厂和主题定义

傅经业
2023-03-14

我试图在Websphere Application Server中添加ActiveMQ作为JMS提供程序。

我已经按照这里描述的说明ActiveMQ5.11和WebSphere Application Server8.5,并根据主题进行了调整。

不幸的是,我不确定需要为主题连接工厂和主题定义在外部JNDI名称中添加什么。

根据IBM文档:

“外部JNDI名称用于将队列绑定到应用程序服务器名称空间的JNDI名称。

此名称用于链接平台绑定信息。绑定将模块的部署描述符定义的资源与平台绑定到JNDI中的实际(物理)资源相关联。“

根据我的理解,这应该是我在应用程序中使用的名称,以访问WAS中定义的资源。

我还将部署描述符中的资源添加为资源。

如有任何帮助,不胜感激。

问候

共有1个答案

席嘉祯
2023-03-14

假设您是通过资源引用(在部署描述符中定义)访问资源,配置的JNDI名称应该与在资源引用中定义的查找名称匹配。

例如,如果您的资源引用如下所示,

  <resource-ref>
    <res-ref-name>java:comp/env/jms/topicConnectionFactoryRef</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
    <lookup-name>jms/myTopicConnectionFactory</lookup-name>
  </resource-ref>

或者,如果您的资源引用缺少查找名,而您有一个带有绑定名的ibm-web-bnd.xml文件,

  <resource-ref name="java:comp/env/jms/topicConnectionFactoryRef"
                binding-name="jms/myTopicConnectionFactory">
  </resource-ref>

然后指定JMS/MyTopicConnectionFactory作为JNDI名称。然后,应用程序代码将能够执行以下操作:

TopicConnectionFactory tcf = InitialContext.doLookup("java:comp/env/jms/topicConnectionFactoryRef");
TopicConnectionFactory tcf = InitialContext.doLookup("jms/myTopicConnectionFactory");
  <resource-env-ref>
    <resource-env-ref-name>java:comp/env/jms/topicRef</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.Topic</resource-env-ref-type>
    <lookup-name>jms/myTopic</lookup-name>
  </resource-env-ref>
  <resource-ref name="java:comp/env/jms/topicRef" binding-name="jms/myTopic">
  </resource-ref>
Topic topic = InitialContext.doLookup("java:comp/env/jms/topicRef");

一些优化/特殊情况:如果既没有lookup-name也没有binding-name,那么WebSphere Application Server将通过资源引用名计算默认绑定。如果您的资源引用是这种情况,那么您将拥有如下所示的部署描述符,而没有任何绑定文件,

  <resource-ref>
    <res-ref-name>jms/myTopicConnectionFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
  </resource-ref>
TopicConnectionFactory tcf = InitialContext.doLookup("java:comp/env/jms/myTopicConnectionFactory");
 类似资料:
  • 我使用Mule ESB来设计一个过程,通过这个过程可以向一个主题发布消息。订阅者将收听主题并接收消息。每个用户对消息的反应不同。这里的目标是能够从HTTP向主题发送测试消息,以测试订阅者。 下面是如何配置JMS连接: 这是流程: 当我运行测试时,我得到以下错误: 任何建议将不胜感激。 罗斯

  • 也许这是一个极端的新手问题,但是: 我将实现向队列发送消息。问题是,我只知道它是一个JMS队列,但不知道是哪个实现(它只是称为ESB)。 所以现在我必须有一个connectionFactory bean,我看到的所有示例都使用ActiveMqConnectionFactory。是否有任何通用工厂/实施?JMS是一种标准,所以我不应该受某些特定工厂实现的约束,对吗?

  • 我试图从Websphere Application Server连接到外部JMS提供者。我们可以不使用Websphere MQ从Websphere Application Server连接到远程JMS提供者吗?

  • 我有一个流量endpoint,我提供给客户机(订户),以接收更新的价格。我正在测试它通过浏览器访问URL(http://localhost:8080/prices),它工作得很好。我面临的问题(我可能在这里遗漏了一些概念)是,当我在许多浏览器中打开这个URL,我希望在所有浏览器中都收到通知,但只有一个浏览器收到通知。它作为一个队列而不是一个主题工作(就像在message Brokers中一样)。那

  • 我需要高级步骤来连接到远程JMS提供程序。 我有一些客户端应用程序希望在JNDI中基于文件系统进行查找,以获得JMS提供程序的连接工厂。 我知道在JMS管理(MQ Explorer)中,我们可以创建连接工厂。这就是创造。绑定文件。我如何使用这个。将文件绑定到我的客户端应用程序系统? 客户端应用程序系统是否应该包含JMS管理员来创建。同一系统或中的绑定。是否应将绑定单独导入到客户端系统? 如果使用文

  • 我什么都试过了,但似乎什么都不起作用。如果有人面临同样的问题,请让我知道。 我的配置包括以下一行:-