Webservice静态客户端生成

对于webservice,个人之前实在没有什么了解,但是所处行业,很多厂商提供出来的接口确都是webservice接口,没办法,遇到问题还是要上。之前刚来到公司,接到的需求就是需要编写一个webservice客户端,虽然之前实际没有用过webservice,但是还是被需要用到的同事耳熟目染过,脑袋中第一想到就是CXF的方式,也是网上一搜索,工具类就出来了,大致工具类代码如下:

  • 引入依赖包
<dependency>
	<groupId>org.apache.cxf</groupId>
	<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
	<version>3.2.5</version>
</dependency>
  • 代码实现
/**
 * web-service工具类
 * @param wsdlURL web-service请求地址
 * @param operationName web-service操作名称
 * @param params 请求参数
 * @return 请求数据JSON字符串
 */
public static String invokeWs(String wsdlURL, String operationName, 
		Object... params) {
	JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
	Client client = clientFactory.createClient(wsdlURL);
	HTTPConduit conduit = (HTTPConduit)client.getConduit();
	HTTPClientPolicy policy = new HTTPClientPolicy();
	policy.setConnectionTimeout(100000);//设置超时时间
	policy.setReceiveTimeout(100000);//设置超时时间
	conduit.setClient(policy);
	Object[] objects;
	JSONObject res = new JSONObject();
	try {
		objects = client.invoke(operationName, params);
	} catch (Exception e) { // 调用接口发生异常
		res.put("ResultCode", "-1");
		res.put("ResultDesc", e.getMessage());
		log.error(e.getMessage(), e);
		return JSONObject.toJSONString(res);
	}
	try {
		conduit.close();
		client.close();
	} catch (Exception e) {
		res.put("ResultCode", "-1");
		res.put("ResultDesc", e.getMessage());
		log.error(e.getMessage(), e);
		return JSONObject.toJSONString(res);
	}
	return parseEsb(objects[0].toString());
}

 

后面项目访问量大了之后,项目出问题后,大家合力找了好久原因,最后分析出是请求第三方webservice的动态生成应该存在问题。于是自己写了两种请求方式进行压测,发现确实是webservice动态客户端调用的方式存在问题后,随后采用了静态的客户端生成方式调用。生成静态客户端的步骤如下:

 

1、下载soap-ui,进行安装(这里利用工具生成webservice静态调用的相关类);

2、下载 apache cxf 包,并进行解压;

3、在soap-ui配置apache cxf命令的路径,填写请求的webservice地址和导出客户端代码目录;

  • 第一步:打开soap-ui,点击Tools -> Apache CXF

 

  • 第二步:在弹出的框中,点击右下加的tools按钮,找到cxf的选项,选择刚才下载apache cxf 包解压出来的bin目录

 

  • 第三步:在弹出框内填写webservice地址,客户端代码生成目录,勾选生成客户端请求代码后点 Generate 生成对应客户端

 

  • 去到设置的导出目录,找到相关代码复制到自己的项目中进行webservice调用(不同的webservice生成的相关类是不一样的)

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值