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)
上一篇 2022年7月21日 下午12:36
下一篇 2022年7月21日 下午12:46


相关推荐

  • virsh命令详解_lsattr命令详解

    virsh命令详解_lsattr命令详解virshhelp分组的命令:域管理(虚拟机实例管理)DomainManagement(helpkeyword’domain’):attach-device从一个XML文件附加装置attach-disk附加磁盘设备attach-interface获得网络界面autostart自动开始一个域

    2022年8月12日
    5
  • 自建型呼叫中心

    自建型呼叫中心产品介绍 nbsp nbsp nbsp nbsp nbsp nbsp HQ CtiService3 0 是一款真正意义上的全功能型智能呼叫中心 集 IVR ACD 录音 外呼 坐席 客户管理等功能于一体 按您的要求不同 可选择标准版 企业版 OEM 版 众多行业客户的选择 高稳定性 可轻松扩充至 100 坐席 nbsp nbsp nbsp nbsp 高性价比 一台电脑 几条电话线即可快速搭建自己的呼叫中心 非托管型 万事不求人 支持个性化定制 提供二次开发包 有 CS BS 两种不同

    2026年3月19日
    2
  • circos 可视化手册- text 篇

    circos 可视化手册- text 篇欢迎关注微信公众号 生信修炼手册 不论是 heatmap 还是 scatter histogram 反应的都是基因组上某段区域对应的 value 值的分布 这里的 value 都是数值 对于 value 是字符串的情况 专门定义了 text 这种图表类型 用于展示 看一个 text 的实例 text 在图上就是一圈的字符串标记 字符串可以添加连线 表明对应的染色体位置 配置文件的写法如下 首先看下 fil

    2025年6月15日
    4
  • unresolved external symbol怎么解决_fatal error lnk1169

    unresolved external symbol怎么解决_fatal error lnk11691.LNK2019错误一般都是compile是能找到相应的header(.h)文件,但链接时找不到相应的lib库文件(也含dll文件)。如果相关库存在的话,一般通过添加附加库,可以解决问题

    2022年10月5日
    3
  • burpsuite简单抓包教程[通俗易懂]

    burpsuite简单抓包教程[通俗易懂]一.配置浏览器(以火狐为例)1.打开菜单,找到选项,点击翻到最下面点击设置,将配置的代理服务器改为手动代理配置,HTTP代理设为127.0.0.1,端口设置为8080(为了burpsuite能截到浏览器发送出来的请求),点击确定。二.burpsuite的设置点击proxy选择Options观察图中的IP地址及端口,如果不是127.0.0.1:8080,则点击add,添加端口和IP地…

    2022年6月14日
    129
  • 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)[通俗易懂]

    数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

    2022年1月25日
    49

发表回复

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

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