CXF学习笔记

  初学CXF,之前遇到了不少的问题,以下列举CXF的小例子以及我遇到的一些问题。

  首先,CXF要使用的架包有很多版本,不同的版本要使用的配合包也有所不同,我用的是cxf 2.5.2、wsdl4j 1.6.2、meethi 3.0.1。

  使用CXF调用WebService有几种方式,最方便的一种是:

public static Object callService(String wsUrl, String method, String msgContent, String phoneNumber,
			String phoneType) {
		if (wsUrl == null || method == null) {
			logger.error("WebService URL is null or WebService Method is null");
			return null;
		}
		Object[] res = null;
		try {
			JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
			Client client = dcf.createClient(wsUrl);
			setCxfTimeOut(client);
			res = client.invoke(method, createXml(msgContent, phoneNumber, phoneType));
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
		}
		return (Object) res[0];
	}

  还有几种方式,这里不做过多的介绍。

  使用CXF发布WebService也非常的方便,  在使用CXF发布WebService之前可以去apache官网下载官方的例子,官方的例子还是很容易上初学者上手的。

  那如何发布WebService呢? 将WSDL文件定义好,使用CXF中的WSDL2JAVA,ubuntu使用命令:wsdl2java -impl -server  mywsdl.wsdl。即可以生成对应的WebService服务端JAVA文件。使用wsdl2java -impl -client  mywsdl.wsdl。即可以生成WebService客户端文件。使用这些生成文件,进行自己逻辑上的小修改,就可以发布自己的WebService了。

  下面介绍下,CXF动态调用WebService设置连接超时:

/**
	 * 设置CXF请求超时.
	 * 
	 * @param client
	 */

	private static void setCxfTimeOut(Client client) {
		// 设置超时单位为毫秒
		HTTPConduit http = (HTTPConduit) client.getConduit();
		HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
		httpClientPolicy.setConnectionTimeout(10000); // 连接超时
		httpClientPolicy.setAllowChunking(false); // 取消块编码
		httpClientPolicy.setReceiveTimeout(10000); // 响应超时
		http.setClient(httpClientPolicy);
	}

  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值