Я не хочу использовать файл 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