一个常用工具类,读取配置文件

package com.yinhai.webservice.bridge;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyStore;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;

import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;

import com.yinhai.webservice.app.aa.action.YAA01WCAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.configuration.security.FiltersType;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.transport.http.HTTPConduit;

public class BridgeWebserviceUtil {
//	private final static String WebServiceIp = BridgeWebserviceUtil.getInstance().getPropValue("WebServiceIp");

	private  static Logger logger = Logger.getLogger(BridgeWebserviceUtil.class.getName());
	
	public static final BridgeWebserviceUtil instance;

	private Properties initProp = new Properties();

	public BridgeWebserviceUtil() {
	}

	public static String getWebserviceIp(String webserviceIp) {
		return BridgeWebserviceUtil.instance.getPropValue(webserviceIp);
	}
	static{
		instance = new BridgeWebserviceUtil();
		instance.init();
	}

	private void init() {
		InputStream in = null;
		try {
			in = getClass().getResourceAsStream("/bs/cxf/bridge/bridgeconfig.properties");
			initProp.load(in);

		} catch (IOException e) {
			logger.info(e+"");
		}finally {
			try {
				if(in!=null)
                    in.close();
			} catch (IOException e) {
				logger.info(e+"");
			}
		}
	}

	public String getPropValue(String name) {
		String retStrt = null;
		retStrt = initProp.getProperty(name);
		return retStrt;
	} 
	
	/**
	 * 根据对应的serviceName获取对应的wsdl
	 * @param webserviceIpFlag
	 * @param serviceName
	 * @param c
	 * @return
	 */
	public static Object getWebService(String webserviceIpFlag, Object serviceName ,Class c){
		String webServiceIp = getWebserviceIp(webserviceIpFlag); //获取对应的webserviceIp;
//		String address = "http://" + webServiceIp + "/xz/services/" + serviceName + "?wsdl";
//		String address = "https://" + webServiceIp + "/xz/services/" + serviceName + "?wsdl";
		String address = webServiceIp + "/xz/services/" + serviceName + "?wsdl";
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();// 获取webservice代理
        factory.setAddress(address);//添加服务器webservice地址
        Map<String, Object> props = new HashMap<String, Object>();
        props.put("mtom-enabled", Boolean.TRUE);//设置上传文件的传输方式(“mtom-enabled”,是否允许使用mtom)
        factory.setProperties(props);
        Object service  = null;
        factory.setServiceClass(c); 
        service = factory.create();//获取婚姻webservice接口,IYAR03WC为客户端接口
        factory = null;
        return service;
	}
	
	
	/**
	 * 
	 * @param c
	 * @param dir_truststore 信任store所处的位置
	 * @param dir_keystore   私钥store所处的位置
	 */
	public static void configureSSLOnTheClient(Object c,String dir_truststore,String dir_keystore) {
        org.apache.cxf.endpoint.Client client = ClientProxy.getClient(c);
        HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
        TLSClientParameters tlsParams = new TLSClientParameters();
		tlsParams.setDisableCNCheck(true);

		TrustManager[] tm = getTrustManagers(dir_truststore);
		tlsParams.setTrustManagers(tm);

		KeyManager[] km = getKeyManagers(dir_keystore);
		tlsParams.setKeyManagers(km);

		FiltersType filter = new FiltersType();
		filter.getInclude().add(".*_EXPORT_.*");
		filter.getInclude().add(".*_EXPORT1024_.*");
		filter.getInclude().add(".*_WITH_DES_.*");
		filter.getInclude().add(".*_WITH_NULL_.*");
		filter.getExclude().add(".*_DH_anon_.*");
		tlsParams.setCipherSuitesFilter(filter);

		httpConduit.setTlsClientParameters(tlsParams);
    }
	
	private static TrustManager[] getTrustManagers(String dir_truststore) {
		TrustManager[] trustManager = null;
		InputStream fp = null;
		try {
            String trustpass = "123456";
			String alg = TrustManagerFactory.getDefaultAlgorithm();
			TrustManagerFactory factory = TrustManagerFactory.getInstance(alg);
			fp = new FileInputStream(getWebserviceIp(dir_truststore));
			KeyStore ks = KeyStore.getInstance("JKS");
			ks.load(fp, trustpass.toCharArray());
			factory.init(ks);
			trustManager = factory.getTrustManagers();
		} catch (Exception e) {
			logger.info(e+"");
		} finally {
			if (fp != null) {
				try {
					fp.close();
					fp = null;
				} catch (IOException e) {
					logger.info(e+"");
				}
			}
		}
		return trustManager;
	}

	public static KeyManager[] getKeyManagers(String dir_keystore) {
		InputStream is = null;
		KeyManager[] keyManager = null;
		try {
			// 获取默认的 X509算法
			String alg = KeyManagerFactory.getDefaultAlgorithm();
			// 创建密钥管理工厂
			KeyManagerFactory factory = KeyManagerFactory.getInstance(alg);
			is = new FileInputStream(getWebserviceIp(dir_keystore));
			// 构建以证书相应格式的证书仓库
			KeyStore ks = KeyStore.getInstance("pkcs12");
			// 加载证书
            String keypass = "123456";
			ks.load(is, keypass.toCharArray());
			factory.init(ks, keypass.toCharArray());
			keyManager = factory.getKeyManagers();
		} catch (Exception e) {
			logger.info(e+"");
		} finally {
			if (is != null) {
				try {
					is.close();
					is = null;
				} catch (IOException e) {
					logger.info(e+"");
				}
			}

		}
		return keyManager;
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值