Java ActiveMQInitialContextFactory与NamingContextFactory

Java ActiveMQInitialContextFactory与NamingContextFactory,java,jndi,activemq,Java,Jndi,Activemq,我正在创建一个java企业应用程序,它使用activemq向独立队列代理发送消息 目前,我通过jndi查找来维护对长期存在的资源的访问,这非常好。我想在ActiveMQ连接工厂和队列连接工厂中继续此模式,但是在中,它指定我的jndi.properties应该具有: java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory 而默认的jndi.properties(用于我的简单对象和外观

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

目前,我通过jndi查找来维护对长期存在的资源的访问,这非常好。我想在ActiveMQ连接工厂和队列连接工厂中继续此模式,但是在中,它指定我的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
对象。您只需将环境传递给its即可正确初始化它

因此,您仍然可以安全地使用
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
在这种情况下,类路径资源的内容类似于

awesome,迫不及待地想尝试一下。