【发布时间】:2016-06-23 14:36:26
【问题描述】:
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);
上面的代码不起作用,我得到下面的错误
com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2059' ('MQRC_Q_MGR_NOT_AVAILABLE').
为了澄清,我在 VM 参数中给出了正确的密钥库、信任库。但不知何故,在 SSL 握手时密钥库没有被拾取。
但如果我在代码中添加以下两行...
SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
cf.setSSLSocketFactory(factory);
...它有效!!!!看起来好像版本 8 jar 无法创建默认 SSLSocketFactory。
有什么想法吗? 7.5 版的 jars 可以在没有这两行的情况下工作。
【问题讨论】: