JAVA MQ SSL\TLS connection with IBM MQ V8 jars not working

Viewed 761
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();

  // Config
  cf.setHostName("XXXXXXX");
  cf.setPort(1414);
  cf.setTransportType(1);
  cf.setQueueManager("XXXXXXXX");
  cf.setChannel("XXXXXXXX");
  cf.setSSLCipherSuite("TLS_RSA_WITH_AES_128_CBC_SHA");

// SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
// cf.setSSLSocketFactory(factory);

  MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection();
  MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  MQQueue queue = (MQQueue) session.createQueue("queue:///QUEUE.NAME");
  MQQueueSender sender =  (MQQueueSender) session.createSender(queue);
  MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(queue);      

  long uniqueNumber = System.currentTimeMillis() % 1000;
  JMSTextMessage message = (JMSTextMessage) session.createTextMessage("SimplePTP "+ uniqueNumber);     
  message.setJMSExpiration(15l);
  // Start the connection
  connection.start();

  sender.send(message);
  System.out.println("Sent message:\\n" + message);

  JMSMessage receivedMessage = (JMSMessage) receiver.receive(10000);
  System.out.println("\\nReceived message:\\n" + receivedMessage);

Above code does not work, I get below error com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2059' ('MQRC_Q_MGR_NOT_AVAILABLE').

Just to clarify, I have given proper keystore,truststore in VM arguments. but somehow keystore does not get picked up while SSL handshake.

But if I add below two lines in the code...

  SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
  cf.setSSLSocketFactory(factory);

...it works!!!! Looks like somehow version 8 jar is not able to create default SSLSocketFactory.

Any idea? Version 7.5 jars works without these 2 lines.

1 Answers
Related