ActiveMQInitialContextFactory与NamingContextFactory

我正在创建一个java企业应用程序,它使用activemq将消息发送到独立的队列代理。

我目前通过jndi查找维护对长期资源的访问,这非常有效。 我想继续使用ActiveMQ连接工厂和队列连接工厂的这种模式,但是在amq文档中它指定我的jndi.properties应该具有:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory 

而默认的jndi.properties(适用于我的简单对象和外观查找具有:

 java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 

我可以和另一个一起使用吗? 我能以某种方式拥有两个jndi.properties文件或两个初始上下文吗?

此问题显示如何通过jndi配置activemq。 我希望他们能很好地一起玩。

您可以创建任意数量的InitialContext对象。 您只需将环境传递给其构造函数即可正确初始化它。

因此,您仍然可以安全地使用jndi.properties并使用可能如下所示的代码初始化activemq的初始上下文:

 public void setUpActiveMQResources() throws IOException, NamingException { InitialContext context = createInitialContext("/activemq.jndi.properties"); // do what you want } public InitialContext createInitialContext(String resource) throws IOException, NamingException { InputStream is = getClass().getResourceAsStream(resource); Properties props = new Properties(); try { props.load(is); } finally { is.close(); } return new InitialContext(props); } 

在这种情况下, activemq.jndi.properties是类路径资源,其内容与此类似