/** * Since Jdk1.5, enumeration is the best way to implement an anti-attack * singleton instance. * */ public enum WsPort { Instance; private static Logger log = LoggerFactory.getLogger(WsPort.class);
@SuppressWarnings("unchecked") public <E> E getSSLPort(Class<E> wsImplementationClass, String trustStoreFiltePath, String trustStorePassWord, String wsURLAdress) { E port = null; try { if (port == null) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(wsImplementationClass); factory.setAddress(RwaCfgUtil.getInstance().getRwaWebServiceProperty(wsURLAdress)); port = (E) factory.create(); Client proxy = ClientProxy.getClient(port); HTTPConduit conduit = (HTTPConduit) proxy.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(6000000); httpClientPolicy.setReceiveTimeout(6000000); conduit.setClient(httpClientPolicy); TLSClientParameters tlsParams = conduit.getTlsClientParameters(); if (tlsParams == null) { tlsParams = new TLSClientParameters(); } tlsParams.setSecureSocketProtocol("SSL"); tlsParams.setDisableCNCheck(true); tlsParams.setTrustManagers(getTrustManagers(trustStoreFiltePath, trustStorePassWord)); conduit.setTlsClientParameters(tlsParams); } } catch (Exception e) { log.error("Init port failed!" + Arrays.toString(e.getStackTrace())); } return port; }