【发布时间】:2020-10-08 10:11:36
【问题描述】:
我不想使用jdni.properties 文件,所以要向我的 JNDI 设置添加新属性,我写了以下内容:
Hashtable<String, Object> jndi_env = new Hashtable<String, Object>();
jndi_env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
jndi_env.put("connectionFactory.ConnectionFactory","vm://0");
jndi_env.put("topic.example","example");
我的问题是,当我调用这个类时:
initialContext = new InitialContext(jndi_env);
由于我在最后一行传递了一个名称参数,因此会查找一个 URL 上下文工厂。
这使我的代码寻找我实际上不想要的tcp://localhost:61616 连接。
我看到有
QueueConnectionFactory: org.apache.activemq.ActiveMQConnectionFactory
example: org.apache.activemq.command.ActiveMQTopic
XAConnectionFactory: org.apache.activemq.ActiveMQXAConnectionFactory
这是我不想要的,或者至少不是他们的类型。
如果我使用我的 jndi.properties 文件进行检查而不传递参数,但我没有遇到建立 tcp 连接的问题,那么我会发现:
ConnectionFactory: org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory
queue: org.apache.activemq.artemis.jndi.ReadOnlyContext
queue/exampleQueue: org.apache.activemq.artemis.jms.client.ActiveMQQueue
dynamicTopics: org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory$2
dynamicQueues: org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory$1
那么我怎样才能改变我添加的jndi_env.put("topic.example","example"); 的对象类型,所以它会是这样的(当然是主题)
queue: org.apache.activemq.artemis.jndi.ReadOnlyContext
queue/exampleQueue: org.apache.activemq.artemis.jms.client.ActiveMQQueue
【问题讨论】:
标签: java jms jndi activemq-artemis