Насколько я понимаю, вы пытаетесь подключиться к MQSeries (QueueManager и Channel являются концепциями MQ и не являются частью AFAIK JMS API), поэтому я думаю, что вам придется использовать специальный клиентский API MQ. Я действительно не эксперт по MQ, но кажется, что приведенный ниже код (см. Реализация независимых от поставщика JMS-решений ) близок к тому, что вы ищете:
MQQueueConnectionFactory qconFactory = new MQQueueConnectionFactory();
qconFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); //Used when the MQSeries server is on a different host from the client
qconFactory.setQueueManager(queueManager);
qconFactory.setHostName(hostName);
qconFactory.setPort(port);
qconFactory.setChannel(channel);
connection = qconFactory.createQueueConnection();
session1 = connection.createQueueSession(true, Session.CLIENT_ACKNOWLEDGE);.....
Как я уже сказал, я не специалист по MQ, но MQQueueConnectionFactory
, похоже, знает о большинстве вещей, о которых вы говорите.
Примечание:
При использовании JNDI необходимо настроить свойства среды JNDI, такие как исходная фабрика контекста и URL-адрес поставщика . По сути, эти свойства используются для объявления, какой класс использовать для создания начального контекста и где найти сервер JNDI. Очевидно, что значения этих свойств зависят от службы JNDI, к которой вы подключаетесь.
Вы можете указать свойства среды, используя непустой конструктор InitialContext
и передав ему параметр environment
. Например, чтобы подключиться к сервису BEA WebLogic JNDI:
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://myhost:7001");
ctx = new InitialContext(p);
Или вы можете предоставить jndi.properties
файл и использовать не-arg InitialContext
конструктор . Например, чтобы подключиться к службе IBM WebSphere JNDI, вы должны поместить файл jndi.properties
со следующим содержимым в classpath:
java.naming.provider.url=iiop://myhost:9001
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
Этот второй подход, конечно, более переносим, поскольку вы не жестко кодируете значения параметров в коде Java (хотя это может и не быть проблемой).
Теперь, в вашем случае, я не могу сказать, нужно ли вам это (и тем более, какие значения использовать), так как вы не предоставили никаких подробностей о вашем контексте (например, о сервере приложений, провайдере JMS или Messaging). решение, к которому вы пытаетесь подключиться).