2009-05-25 5 views
3

У меня есть приложение, которое использует API Java WebSphere MQ вместе с файлом конфигурации (xml) для доступа к MQ. Я хотел бы перейти на WebSphere JMS API. Для этого я пытаюсь создать 1) Завод по производству очереди WebSphere MQ и 2) адреса очереди WebSphere MQ из моего локального WAS. Когда я настраиваю адреса своих очередей и пытаюсь установить параметры MQ Config, я получаю сообщение об ошибке вроде «WMSG0316E: вы пытались просмотреть очередь, которая не была локальной очередью. Поддерживается только администрирование локальных очередей».WebSphere MQ с использованием JMS

Сообщение верное в том смысле, что я пытаюсь подключиться к удаленной очереди. Теперь, не могу ли настроить мой WAS как клиент MQ, пытающийся подключиться к удаленной очереди? Клиент MQ имеет необходимые JQ JQ MQ в пути к классу сервера.

Был бы признателен, если бы кто-нибудь мог пролить свет на это.

ответ

4

Я работаю над этой же проблемой - я нашел статьи, в которых авторы подтверждают, что WebSphere должно быть сказано, что режим «клиент в удаленную очередь» желателен, но мне еще предстоит найти подробную информацию о том, как это сделать что помимо одного автора упоминается переменная среды.

Все еще ищу ... Я отправлю решение, если найду его.

+0

Решением было установить параметр «Тип транспорта» в заводской конфигурации подключения очереди JMS к «клиенту» вместо «Привязки».Это находится в консоли администратора WAS, в разделе «Ресурсы» -> «Поставщики JMS» -> «WebSphere MQ» -> «Дополнительные свойства», где есть пункт «Закупочные подключения к WebSphere MQ», который приведет вас к список ваших фабрик подключения очереди. Очередь, которую вы используете (как указано в настройках порта вашего слушателя), - это параметр, который необходимо изменить. Надеюсь, это поможет, Мэтт –

+0

Вы также можете увидеть его как MQQueueConnectionFactory cf = new MQQueueConnectionFactory(); cf.setTransportType (JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); // клиентский режим – jim

1

Я вырезал &, вставив ваше сообщение об ошибке в Google. В их неповторимом стиле here являются документами IBM по вашей проблеме. Полезно, нет?

Где вы настраивали очередь, в которую хотите связаться? Он работает на том же сервере, что и экземпляр WebSphere, на котором вы развернулись, или это удаленный сервер? Если это последний, мне интересно, нужен ли вам мост или прокси-сервер, чтобы вы могли отправлять сообщение локально, но оно появилось на удаленном сервере через прокси-сервер.

UPDATE: Я не знаю, но, возможно, один из способов обойти это - настроить локальную очередь, похожую на то, что вы говорите, и просто переслать все сообщения в удаленную очередь.

+0

MQ работает на удаленном сервере. Вот где я застрял - «.. для отправки сообщения локально ..» Я попытался установить MQ 6 и WAS в одной системе, и JMS работал нормально. Однако, когда MQ находится в удаленной системе, чей IP-адрес я укажу при настройке ресурсов JMS, я получаю это исключение. – Subramanian

1

Вы можете что-то прояснить. Вы говорите, что вы создали «фабрику соединений» и место назначения очереди из вашего локального WAS. Вы имеете в виду, что сами строите объекты?

Если это так, вы должны настраивать ресурсы как часть конфигурации своих приложений, а затем просматривать их через JNDI. Конфигурация - это то, где локальные ресурсы JMS привязаны к фактической реализации, в вашем случае - удаленному серверу MQ. Ваш код должен быть привязан только к JMS, а не к конкретной реализации.

+0

Я «настраиваю» ресурсы WebSphere JMS, а именно MQ Queue ConnectionFactory и MQ Queue Destination в WAS. Код связан только с JMS, а не с реализацией - это было очень важно для внесения такого изменения. Я сам не строю объекты. Извините за формулировку - «создать» - если это вызвало некоторую путаницу. – Subramanian

+0

@Subramanian. Проблема связана с использованием MQ при обращении к ресурсам JMS. (т. е. MQ Queue ConnectionFactory вместо Queue ConnectionFactory). Я думал, что вы, возможно, ссылались на артефакты MQ, а не на JMS. – Robin

Смежные вопросы