2013-11-28 3 views
3

Этот код отправляет сообщение в Q. Статические значения MQEnvironment установлены. Но MQEnvironment - это без ссылки в любом месте менеджера. Затем, как предоставляются свойства (имя хоста, канал, порт, CCSID) для подключения к MQ?Статические свойства Java MQEnvironment

MQEnvironment.hostname ="10.XX.XXX.XX"; 

    MQEnvironment.channel = "SYSTEM.DEF.SVRCONN"; 

    MQEnvironment.port = 1415; 

    MQEnvironment.CCSID = 819; 

    System.out.println("connecting MQQueueManager..."); 
    try { 
     MQQueueManager manager = new MQQueueManager("SXX"); 

     MQQueue queue = null; 

     int openOptions = MQC.MQOO_OUTPUT; //MQC.MQOO_INPUT_AS_Q_DEF | 

     queue = manager.accessQueue("Q_NAME", 
              openOptions, 
              null, null, null); 
     // send message 
     MQMessage sendMessage = new MQMessage(); 

     sendMessage.writeObject("TEST [email protected]@@@@@@@@@@@@@@@@"); 
     MQPutMessageOptions pmo = new MQPutMessageOptions(); 

     queue.put(sendMessage, pmo); 

ответ

2

проверяет объект MQQueueManager, чтобы увидеть, если эти значения были установлены в классе MQEnvironment до того, как она делает соединение с менеджером очередей.

Кроме того, НЕ используйте канал SYSTEM.DEF.SVRCONN как (1), это против лучших практик и (2) это объект SYSTEM, который ТОЛЬКО используется диспетчером очередей. Просто создайте MQAdmin или создайте для него канал SVRCONN. т. е. TEST.CHL

+0

Есть ли способ установить их непосредственно в MQQueueManager.java? – hipokito

+0

Что? Имя канала, имя хоста и порт #? Не используйте класс MQEnvironment, поскольку он не является потокобезопасным. Поместите информацию в Hashtable и передайте ее классу MQQueueManager. См. Https://stackoverflow.com/questions/34628283/java-program-to-connect-wmq-with-user-id-instead-of-channel/34642355#34642355 – Roger

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