JaxWsProxyFactoryBean调用WebService实例[通俗易懂]

JaxWsProxyFactoryBean调用WebService实例[通俗易懂]WebServiceUtils工具类packagexxxx;importjava.util.ResourceBundle;importorg.apache.cxf.endpoint.Client;importorg.apache.cxf.frontend.ClientProxy;importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean…

大家好,又见面了,我是你们的朋友全栈君。

WebServiceUtils 工具类

package xxxx;
import java.util.ResourceBundle;
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 org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.springframework.stereotype.Service;
@Service
public class WebServiceUtils {
	public static final int CXF_CLIENT_CONNECT_TIMEOUT = 30 * 1000;
	public static final int CXF_CLIENT_RECEIVE_TIMEOUT = 30 * 1000;
	/**
	 * 
	 * @param clazz
	 * @param paraName
	 * @param timeout
	 * @return
	 */
	public <T> T getWebService(Class<T> clazz, String paraName, Integer... timeout) {

		ResourceBundle dBResources = ResourceBundle.getBundle("application-config");
		String url = dBResources.getString(paraName);

		if (timeout == null || timeout.length == 0) {
			return getWebServiceByUrl(clazz, url);
		} else if (timeout.length == 1) {
			return getWebServiceByUrl(clazz, url, timeout[0], timeout[0]);
		} else {
			return getWebServiceByUrl(clazz, url, timeout[0], timeout[1]);
		}
	}

	public <T> T getWebServiceByUrl(Class<T> clazz, String url) {
		return getWebServiceByUrl(clazz, url, CXF_CLIENT_CONNECT_TIMEOUT, CXF_CLIENT_RECEIVE_TIMEOUT);
	}

	private <T> T getWebServiceByUrl(Class<T> clazz, String url, Integer connetTimeout, Integer receiveTimeout) {
		// 用于创建JAX-WS代理的工厂,此类提供对用于设置代理的内部属性的访问。使用它可以提供比标准JAX-WS API更多的控制。
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setServiceClass(clazz);
		factory.setAddress(url);
		@SuppressWarnings("unchecked")
		// 创建可用于进行远程调用的代理对象。
		T webService = (T) factory.create();

		// 设置接口 连接超时和请求超时
		// 通过代理对象获取本地客户端
		Client proxy = ClientProxy.getClient(webService);
		// 通过本地客户端设置 网络策略配置
		HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
		// 用于配置客户端HTTP端口的属性
		HTTPClientPolicy policy = new HTTPClientPolicy();
		// 超时控制 单位 : 毫秒
		policy.setConnectionTimeout(connetTimeout);
		policy.setReceiveTimeout(receiveTimeout);
		conduit.setClient(policy);
		return webService;
	}

}

实际调用示例

String jsonoInfo = null;
try {
			jsonInfo = webServiceUtil.getWebService(GjxxWebService.class, 	
			"webService_url").gjglAccountqueryPersonFuzzyWs(zjhm, idType, pageNo, pageSize);
		} catch (WebServiceException se) {
	        	xxxxxxx....
		}

各参数名称等分析:

名称 描述
GjxxWebService 通过wsdl 生成的接口
webService_url 接口的url地址
gjglAccountqueryPersonFuzzyWs 接口中的某个方法
zjhm, idType, pageNo, pageSize 调用该接口所需要的参数
jsonInfo 调用该接口的返回值,据接口具体而定
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162672.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hbuilder安装使用教程_ghost使用教程图解

    hbuilder安装使用教程_ghost使用教程图解前段时间朋友让我帮忙打包一个IPA文件(使用HTML5开发的Web应用),了解到HBuilder这款H5开发神器。之前一直使用WebStorm开发H5,闲来无事也学习下HB

    2022年8月5日
    4
  • LVM 应用配置详解

    LVM 应用配置详解

    2021年8月5日
    49
  • 多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …

    多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …雷锋网(公众号:雷锋网)AI科技评论按:英国当地时间1月24日,DeepMind在伦敦组织线上直播,向全世界的游戏AI研究人员以及游戏爱好者们介绍自己的AI研发最新进展。参加直播的DeepMind研究人员是DeepMind团队联合研发负责人OriolVinyals和DavidSilver,后者也是Alph…

    2022年6月1日
    51
  • MATLAB R2019b超详细安装教程(附完整安装文件)

    MATLAB R2019b超详细安装教程(附完整安装文件)摘要:本文详细介绍MATLABR2019b的安装步骤,为方便安装这里提供了完整安装文件的百度网盘下载链接供大家使用。从文件下载到证书安装本文都给出了每个步骤的截图,按照图示进行即可轻松完成安装使用。本文目录包括:下载安装包、正式安装步骤、复制替换文件、创建快捷方式。

    2022年6月11日
    230
  • Python 进制转换函数及前缀截取

    Python 进制转换函数及前缀截取“人生苦短,我用Python”,强大的Python肯定也自己内置的进制转换函数。十进制转其他进制:10进制数s:a=bin(s)//十进制转2进制b=oct(s)//十进制转8进制c=hex(s)//十进制转16进制其他进制转成10进制:s:转换的字符串r:要转换的进制位数2,6,18int(s,r)…

    2022年5月12日
    47
  • python进阶(8)多进程[通俗易懂]

    python进阶(8)多进程[通俗易懂]进程前置知识点进程:一个程序运行起来后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单元。并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行

    2022年7月31日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号