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

Websphere 添加ActiveMQ作为JMS提供程序、主题连接工厂和主题定义,websphere,activemq,Websphere,Activemq,我正在尝试将ActiveMQ添加为WebSphereApplicationServer中的JMS提供程序 我已按照此处描述的说明进行了调整,以适应本主题 不幸的是,对于主题连接工厂和主题定义,我不确定需要在外部JNDI名称中添加什么 根据IBM文档: “外部JNDI名称用于将队列绑定到的JNDI名称 应用程序服务器名称空间 作为惯例,使用完全限定的JNDI名称;例如,在 表单jms/Name,其中Name是资源的逻辑名称 此名称用于链接平台绑定信息 绑定将部署描述符定义的资源关联起来 将模块绑定

我正在尝试将ActiveMQ添加为WebSphereApplicationServer中的JMS提供程序

我已按照此处描述的说明进行了调整,以适应本主题

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

根据IBM文档:

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

作为惯例,使用完全限定的JNDI名称;例如,在 表单jms/Name,其中Name是资源的逻辑名称

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

据我所知,这应该是我在应用程序中用于访问WAS中定义的资源的名称

我还将资源作为资源添加到部署描述符中

任何帮助都将不胜感激


关于

如果您通过资源引用(在部署描述符中定义)访问资源,则配置的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>
  <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>
应用程序代码还可以直接查找JNDI名称,如下所示(尽管使用资源引用是首选,因为它更符合规范,跨应用程序服务器更标准)

这同样适用于javax.jms.Topic。 如果部署描述符中的资源环境引用如下所示

  <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>
  <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>
一些优化/特殊情况: 如果您既没有查找名称也没有绑定名称,那么WebSphereApplicationServer将通过资源引用名称计算默认绑定。如果您的资源引用是这种情况,那么您将有一个部署描述符,如以下所示,但没有任何绑定文件

  <resource-ref>
    <res-ref-name>jms/myTopicConnectionFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
  </resource-ref>
  <resource-ref name="java:comp/env/jms/topicRef" binding-name="jms/myTopic">
  </resource-ref>
Topic topic = InitialContext.doLookup("java:comp/env/jms/topicRef");
  <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");