如何为JMS连接工厂查找指定初始上下文详细信息

时间:2013-02-22 05:08:44

标签: java jboss jms

我遇到了工作情况,我需要为底层架构组件指定初始上下文名称,以便它可以帮助我将消息发布到JMS队列。

如何指定确切的上下文工厂名称? 我认为这可能是基于谷歌搜索结果使用“org.jnp.interfaces.namingcontextfactory”的字符串。我想了解一下获取此字符串的权威方法是什么,可能将jboss服务器配置作为起点?

由于 Cinish

1 个答案:

答案 0 :(得分:1)

初始上下文是对JNDI命名空间的引用,可以查找JMS队列之类的对象。我前段时间写了tutorial,你可能会觉得有帮助。

对于远程 jboss服务器,应该有3个基本服务器(使用默认端口):

  • java.naming.factory.initial :org.jnp.interfaces.NamingContextFactory
  • java.naming.factory.url.pkgs :org.jboss.naming:org.jnp.interfaces
  • java.naming.provider.url :< hostname>:1099

代码看起来像这样:

import javax.naming.*;
import javax.jms.*;
import java.util.*;
.....
Properties jndiProps = new Properties();
jndiProps.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
jndiProps.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
jndiProps.put("java.naming.provider.url", "localhost:1099");
Context ctx = new InitialContext(jndiProps);
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");

如果您的代码在 jboss服务器中运行,则不需要这些属性,因为它们是隐式的。

import javax.naming.*;
import javax.jms.*;
.....
Context ctx = new InitialContext(); // no properties needed
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");