Проблема здесь заключается в том, что «мой босс попросил меня использовать чистую java JMS (не ibm.mq lib) для этого».JMS - это спецификация, и каждая реализация должна соответствовать API и семантике, но может свободно делать все, что захочет, на низком уровне.Всегда необходимо использовать классы реализации, предоставляемые поставщиком транспорта.Поэтому, если вы используете WebSphere MQ в качестве транспорта, вам нужно будет использовать классы IBM MQ JMS для написания приложения JMS.
Тем не менее, если вы будете придерживаться чисто вызовов JMS API, вы сможете подключитьклассы любого транспортного поставщика.Это то, что обычно подразумевается, когда вам предъявляются такие требования, как те, которые упомянуты в исходном посте.
Есть статья, описывающая в точности то, что вы хотите сделать, под названием Запуск автономного Java-приложения наWebSphere MQ V6.0 Он использует только API-интерфейс JMS и JNDI в локальной файловой системе (файл .bindings).Меняя местами классы IBM JMS для другого поставщика и используя их инструменты JNDI, вы сможете подключить любой транспорт JMS без изменения кода с помощью этого подхода.
Если вы хотите сделать то же самое без JNDI,посмотрите примеры программ, поставляемых с MQ-клиентом, где вы получили классы Java.В системе UNIX / Linux они находятся в /opt/mqm/samp
, а в Windows - в install_dir/tools/jms/samples
.Пример SimpleRequestor.java
содержит следующий код для инициализации фабрики соединений без JNDI:
try {
// Create a connection factory
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
// Set the properties
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost");
cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM1");
Поскольку этот подход не использует JNDI, необходимо написать код, который нельзя переносить между поставщиками транспорта.Это специфично для IBM WebSphere MQ.
Если вы взяли банки MQ откуда-то и не имеете полной установки (и, следовательно, не имеете примеров), вы можете загрузить их как SupportPac MQC7 ,Загрузка бесплатна.В общем случае вы должны использовать самую последнюю версию клиента, даже с администратором очередей на обратном уровне.Очевидно, вы не получаете функциональность V7 от V6 QMgr, но реализация JMS в клиенте V7 значительно улучшена, даже для функциональности V6.Если по какой-то причине вам действительно нужно использовать клиент V6, вы можете загрузить его как SupportPacMQC6 .Какую бы версию клиента вы не использовали, обязательно используйте соответствующий Инфоцентр.
V6 Инфоцентр
V7 Инфоцентр
Наконец, целевая страницас индексом для всех SupportPacs здесь .