Сбой IBM MQ по причине «2278» («MQRC_CLIENT_CONN_ERROR») - PullRequest
0 голосов
/ 23 мая 2018

Я безуспешно пытался получить Java-приложение для подключения к IBM MQ v8 через файл CCDT.Я могу подключиться нормально при подключении, используя свойства (имя хоста, порт и т. Д.), Но с CCDT я постоянно получаю WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2278' ('MQRC_CLIENT_CONN_ERROR').

Я использую ванильную установку MQ Developer 8.0 (требуется версия,не может измениться) и банки из установки.Все, что я сделал, это установил MQ, затем настроил QueueManager 'QM1', затем создал очередь 'Q1'.

Мой код:

    package mqtest;

    import com.ibm.mq.jms.*;
    import java.io.File;
    import java.net.URL;

    public class Main {

    public static void main(String[] args) {
        try {
            MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
            File file = new File("C:/ProgramData/IBM/MQ/qmgrs/QM1/@ipcc/AMQCLCHL.TAB");
            URL clientChannelTableUrl = file.toURI().toURL();

            cf.setQueueManager("QM1");
            cf.setCCDTURL(clientChannelTableUrl);

            MQQueueConnection mqQueueConnection = (MQQueueConnection) cf.createConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

dis qmgr

AMQ8408: Display Queue Manager details.
   QMNAME(QM1)                             ACCTCONO(DISABLED)
   ACCTINT(1800)                           ACCTMQI(OFF)
   ACCTQ(OFF)                              ACTIVREC(MSG)
   ACTVCONO(DISABLED)                      ACTVTRC(OFF)
   ALTDATE(2018-05-23)                     ALTTIME(10.21.26)
   AUTHOREV(DISABLED)                      CCSID(437)
   CERTLABL(ibmwebspheremqqm1)             CERTVPOL(ANY)
   CHAD(DISABLED)                          CHADEV(DISABLED)
   CHADEXIT( )                             CHLEV(DISABLED)
   CHLAUTH(ENABLED)                        CLWLDATA( )
   CLWLEXIT( )                             CLWLLEN(100)
   CLWLMRUC(999999999)                     CLWLUSEQ(LOCAL)
   CMDEV(DISABLED)                         CMDLEVEL(800)
   COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE)    CONFIGEV(DISABLED)
   CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
   CRDATE(2018-05-23)                      CRTIME(10.21.26)
   CUSTOM( )                               DEADQ( )
   DEFCLXQ(SCTQ)                           DEFXMITQ( )
   DESCR( )                                DISTL(YES)
   INHIBTEV(DISABLED)                      IPADDRV(IPV4)
   LOCALEV(DISABLED)                       LOGGEREV(DISABLED)
   MARKINT(5000)                           MAXHANDS(256)
   MAXMSGL(4194304)                        MAXPROPL(NOLIMIT)
   MAXPRTY(9)                              MAXUMSGS(10000)
   MONACLS(QMGR)                           MONCHL(OFF)
   MONQ(OFF)                               PARENT( )
   PERFMEV(DISABLED)                       PLATFORM(WINDOWSNT)
   PSMODE(ENABLED)                         PSCLUS(ENABLED)
   PSNPMSG(DISCARD)                        PSNPRES(NORMAL)
   PSRTYCNT(5)                             PSSYNCPT(IFPER)
   QMID(QM1_2018-05-23_10.21.26)           REMOTEEV(DISABLED)
   REPOS( )                                REPOSNL( )
   REVDNS(ENABLED)                         ROUTEREC(MSG)
   SCHINIT(QMGR)                           SCMDSERV(QMGR)
   SPLCAP(ENABLED)                         SSLCRLNL( )
   SSLCRYP( )                              SSLEV(DISABLED)
   SSLFIPS(NO)
   SSLKEYR(C:\ProgramData\IBM\MQ\qmgrs\QM1\ssl\key)
   SSLRKEYC(0)                             STATACLS(QMGR)
   STATCHL(OFF)                            STATINT(1800)

В журнале ошибок в C: \ ProgramData \ IBM \ MQ \ qmgrs \ QM1 \ errors нет соответствующих (по крайней мере, я вижу) данных.

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

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

1 Ответ

0 голосов
/ 14 мая 2019

MQ Версия: 9.0.0.4

Шаг 1: требуется только одна банка: com.ibm.mq.allclient-9.0.4.0.jar

Шаг 2: Не устанавливать никакие переменныев MQEnvironment

Шаг 3:

java.net.URL chanTab1 = new URL("file:///C:/MGR.TAB");          
MQQueueManager _queueManager = new MQQueueManager("*", chanTab1);
int openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
MQQueue queue = _queueManager.accessQueue( "QNAME", openOptions,null,null, null );

MQMessage sendmsg = new MQMessage ();

* позволит вам подключить весь QManager, доступный в .TABфайл.

Шаг 4: Установите сертификат в свой jre C:\Program Files\Java\jdk1.7\jre\bin по команде

keytool -import -alias example -keystore  ..\lib\security\cacerts -file C:\test.cer

пароль по умолчанию - changeit.В основном никто не меняет это.: -)

или

, если вы развернули свой код на сервере приложений websphere, нет необходимости устанавливать сертификат на сервере JRE.Сертификат установки Insted на сервере Websphere. Управление сертификатами SSL и ключами> Хранилища ключей и сертификаты> NodeDefaultKeyStore> Сертификаты подписчика> Получить с порта

...