Я настраиваю веб-приложение для подключения к другому веб-приложению через WMQ.
Конфигурация MQ работает нормально на локальном уровне, когда оба приложения подключены к одному и тому же локальному серверу.
Но, когда я развертывал каждое приложение на своих серверах, я получаю ошибку CCDT.
Сервер 1 - подключается к серверу 2 через удаленный JNDI
Сервер 2 - содержит фабрику соединений WMQ, функции очереди и активации.
При тестировании в журналах Server 1 отображается сообщение об исключении. Что меня смутило, почему Сервер 1 ищет файл TAB, когда сервер 2 настроен для подключения к MQ через CCDT. Кроме того, сервер 2 не содержит исключений.
Какие-нибудь идеи о том, какая конфигурация я сделал неправильно?
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278;AMQ9516: File error occurred. [1=java.io.FileNotFoundException[\ccdt\CCDT.tab (The system cannot find the path specified.)],3=file:/ccdt/CCDT.tab]
at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:333)
at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:191)
at com.ibm.mq.jmqi.remote.internal.system.RemoteCCDT.<init>(RemoteCCDT.java:68)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.getCcdt(RemoteFAP.java:413)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1580)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1286)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:367)
У вас есть следующие решения:
Обычно проще создавать ресурсы локально для приложения, которое его использует.
Я думаю, что здесь была какая-то путаница.
Ваши удаленные вызовы JNDI, создающие исходный контекст, указывающий на сервер 2, просто означают, что вы просматриваете Factory Connection на сервере 2.
Поэтому, если фабрика подключений на сервере 2 была настроена с помощью CCDT, тогда, когда сервер 1 делает попытку подключения с использованием фабрики соединений с сервера 2, тогда он также будет использовать CCDT, как это делает определение в JNDI.
Имеет ли это смысл?
Я бы рекомендовал вам:
a) Создайте вторую фабрику соединений в удаленном JNDI с другим именем без конфигурации CCDT. Таким образом, вы могли бы иметь "ccdtCF" и "cf", например. Затем вы настраиваете приложения на серверах приложений для использования соответствующего cf.
b) Используйте локальный JNDI на каждом настроенном вами сервере.
c) Убедитесь, что все клиенты подключаются одинаково на всех серверах. Либо все CCDT (и CCDT должны находиться в одном и том же месте файловой системы), либо нет соединений CCDT.