【发布时间】:2016-07-11 13:08:25
【问题描述】:
SSL 适用于 IBM MQ 6 客户端 jar,但相同的代码不适用于 IBM 8 jar。是否有人遇到过 IBM 8 客户端 jar 的问题。
代码:
com.ibm.mq.MQQueueManager qmRequest = null;
com.ibm.mq.MQQueue qRequest = null;
com.ibm.mq.MQMessage reqMsg = new com.ibm.mq.MQMessage();
reqMsg.writeString(new String("first MQ SSL Message test"));
reqMsg.messageId = "1".getBytes();
reqMsg.correlationId = "2".getBytes();
System.setProperty("javax.net.ssl.trustStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
System.setProperty("javax.net.ssl.keyStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "12345678");
Hashtable<String,Object> propMap = new Hashtable<String,Object>();
propMap.put(MQConstants.HOST_NAME_PROPERTY, "localhost");
propMap.put(MQConstants.PORT_PROPERTY, 1415);
propMap.put(MQConstants.CHANNEL_PROPERTY, "testG");
propMap.put(MQConstants.SSL_PEER_NAME_PROPERTY, "CN=ibmwebspheremqtestqu");
String qmNameRequest = "testQu";
String qNameRequest = "testQQ";
propMap.put(MQConstants.SSL_CIPHER_SUITE_PROPERTY, "TLS_RSA_WITH_AES_128_CBC_SHA");
qmRequest = new com.ibm.mq.MQQueueManager(qmNameRequest,propMap);
int reqQueueOpt = MQConstants.MQOO_OUTPUT | MQConstants.MQOO_SET_IDENTITY_CONTEXT;
qRequest = qmRequest.accessQueue(qNameRequest, reqQueueOpt);
reqMsg.messageType = MQConstants.MQMT_DATAGRAM;
com.ibm.mq.MQPutMessageOptions reqMsgOpt = new com.ibm.mq.MQPutMessageOptions();
reqMsgOpt.options = MQConstants.MQPMO_SET_IDENTITY_CONTEXT;
qRequest.put(reqMsg, reqMsgOpt);
qRequest.close();
qmRequest.disconnect();
上面的代码适用于 IBM jdks,但对于 oracle jdk,它总是失败并抛出与 SSL 相关的异常。
【问题讨论】:
-
例外很重要,请分享。