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.