文档章节

关于CXF大文件的传输问题

梅花扣肉
 梅花扣肉
发布于 2015/11/23 14:57
字数 349
阅读 38
收藏 1

1.客户端调用webservice工具类


package cn.net.sunge.oas_dep.utils;

import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.util.Map;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;

import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.transport.http.HTTPConduit;

import cn.net.sunge.oas_dep.modules.webservice.model.FileEntity;

public class WsClientUtil {

	public static <T> T getInterface(Class<T> clazz, String address) {
		return getInterface(clazz, address, null);
	}

	@SuppressWarnings("unchecked")
	public static <T> T getInterface(Class<T> clazz, String address, Map<String, Object> properties) {
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setAddress(address);
		factory.setServiceClass(clazz);
		if (null != properties) {
			factory.setProperties(properties);
		}
		return (T) factory.create();
	}

	public static <T> T getHttpsInterface(Class<T> clazz, String address, String jksPath, String jksPwd) {
		return getHttpsInterface(clazz, address, jksPath, jksPwd, null);
	}

	@SuppressWarnings("unchecked")
	public static <T> T getHttpsInterface(Class<T> clazz, String address, String jksPath, String jksPwd, Map<String, Object> properties) {
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setAddress(address);
		factory.setServiceClass(clazz);
		if (null != properties) {
			factory.setProperties(properties);
		}
		T t = (T) factory.create();
		configureSSLOnTheClient(t, jksPath, jksPwd);
		return t;
	}

	private static void configureSSLOnTheClient(Object obj, String jksPath, String jksPwd) {
		File file = new File(jksPath);

		Client client = ClientProxy.getClient(obj);
		HTTPConduit httpConduit = (HTTPConduit) client.getConduit();

		try {
			TLSClientParameters tlsParams = new TLSClientParameters();
			tlsParams.setDisableCNCheck(true);

			KeyStore keyStore = KeyStore.getInstance("JKS");
			String password = jksPwd;
			String storePassword = jksPwd;

			keyStore.load(new FileInputStream(file), storePassword.toCharArray());
			TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
			trustFactory.init(keyStore);
			TrustManager[] trustManagers = trustFactory.getTrustManagers();
			tlsParams.setTrustManagers(trustManagers);

			keyStore.load(new FileInputStream(file), storePassword.toCharArray());
			KeyManagerFactory keyFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
			keyFactory.init(keyStore, password.toCharArray());
			KeyManager[] keyManagers = keyFactory.getKeyManagers();
			tlsParams.setKeyManagers(keyManagers);

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

			tlsParams.setDisableCNCheck(true);

			httpConduit.setTlsClientParameters(tlsParams);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Construct FileEntity.
	 * 
	 * @param the
	 *            real file path.
	 * @return FileEntity.
	 */
	public static FileEntity constructFileEntity(String filePath) {
		// construct FileEntity
		FileEntity fileEntity = new FileEntity();
		File file = new File(filePath);
		fileEntity.setFileName(file.getName().substring(0, (file.getName().lastIndexOf("."))));
		fileEntity.setFileType(filePath.substring(filePath.lastIndexOf(".") + 1));
		DataSource source = new FileDataSource(file);
		DataHandler handler = new DataHandler(source);
		fileEntity.setFile(handler);
		return fileEntity;
	}
}

2.调用Util

Map<String, Object> properties = Maps.newHashMap();
properties.put("mtom-enabled", true);
IntranetFileWebserviceI intranetFileWebservice = WsClientUtil.getIntranetInterface(IntranetFileWebserviceI.class, IntranetFileWebserviceI.address, properties);



 参考资料:

http://yanghui-java.iteye.com/blog/1747643

© 著作权归作者所有

梅花扣肉
粉丝 3
博文 50
码字总数 5332
作品 0
石家庄
程序员
私信 提问
关于CXF对于WS-Security中用户验证机制的疑问!

首先, 非常感谢zhushidan100同学的博文(http://zhushidan100.iteye.com/blog/1167751)让我想起了这个问题: 问题描述: 某些WebService只能为特殊的用户服务, 在使用CXF实现WS-Security的用户验...

bayer
2012/04/08
2.7K
5
cmd窗口输入wsdl2java命令,出现Unable to find cxf-manifest.jar in cxf_home\lib 的错误,但是在lib中的的确确是有cxf-manifest.jar文件的。

在cmd窗口输入wsdl2java命令,出现Unable to find cxf-manifest.jar in cxf_home\lib 的错误,但是在lib中的的确确是有cxf-manifest.jar文件的。 cxf_home的环境变量配置也是正确,用dir /a ...

bug恐惧症患者
2015/11/22
543
0
Apache CXF 和 Spring 开发 Web Service 1

正文 为什么使用CXF 本文段摘录自 http://www.ibm.com/developerworks/cn/webservices/ws-pojo-springcxf/index.html Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务...

洋葱94
2015/12/04
268
0
cxf与spring整合问题

最近练习cxf与spring遇到的问题。利用cxf写了一个最简单的webservice程序。只有一个接口HelloWorld和一个实现类HelloWorldWs。但是整合到spring发布时就遇到了问题。tomcat浏览器显示No serv...

断水为桥
2014/03/14
784
0
spring+restful service

Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述...

游宵
2014/04/25
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Sleuth 整合 feign 源码分析

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient 包括创建span一些参数

xiaomin0322
8分钟前
1
0
Less 延伸

extend 是一个 Less 伪类,它通过使用 :extend 选择器在一个选择器中扩展其他选择器样式。 扩展语法 扩展可以是附加到选择器,也可以是集中放置在规则,看上去像是带有选择器参数的可选伪类,...

凌兮洛
9分钟前
1
0
RedHat 7.0系统中安装mysql 5.7.22

在安装之前,首先要查看的是,你的系统中有没有已经安装过的情况。键入rpm -qa|grep mysql,如果无任何显示,则表示没有安装过相关组件,如果有,则根据显示出来的名字,键入rpm -e --nodeps...

最菜最菜之小菜鸟
14分钟前
2
0
RPA:企业信息孤岛的“克星”

为了降本增效,近来世界范围内掀起一股流程优化的热潮,转型升级成为众多企业时刻挂在嘴边的热词。不过在企业数字化转型的过程中,信息孤岛的出现,往往成为了企业升级的绊脚石。 信息孤岛:...

UiBot
15分钟前
2
0
我的测试

我的测试

daiison
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部