客户端利用CXF中的JaxWsProxyFactoryBean 对webservice地址进行调用

其实调用代码关键就简单几行

一个实现类,一个引用接口、接口主要指定需要调用的webservice地址中的方法、参数、返回类型的配置

public Object webserviceRequest(String bidCode){
		try {
			JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
			factoryBean.setAddress("http://***********webservice地址**********-service?wsdl");
			factoryBean.setServiceClass(IGTPExtractResultService.class);//通过接口指定请求方法名称/返回类型/参数
			IGTPExtractResultService ex =(IGTPExtractResultService)factoryBean.create();
			configTimeout(ex);//超时设置
			Object object = ex.GetExpertInfoList(bidCode);//请求完毕后、类型接收
			return object;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	


 

/**
	 * 客户端调用请求时超时设置
	 * @param service
	 */
	public static void configTimeout(Object service) {
		Client proxy = ClientProxy.getClient(service);
		HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
		HTTPClientPolicy policy = new HTTPClientPolicy();
		policy.setConnectionTimeout(8*1000);//8S 请求时间
		policy.setReceiveTimeout(10*1000);//10S 连接时间
		conduit.setClient(policy);
	}


接口代码

@WebService(name ="WebserviceTestService", targetNamespace = "http://service.projectregister.procurement/")
public interface IGTPExtractResultService {
	@WebResult(name = "return", targetNamespace = "http://service.projectregister.procurement/")
	@WebMethod(operationName = "GetExpertInfoList")//指定调用webservice地址的方法名称
	public Object GetExpertInfoList(String bidCode);//参数
}

 

上述代码中的方法名称可以填写已知类型、我这里仅为了调试,暂时修改为Obeject类型了。

你可能感兴趣的:(Java/Web开发,CXF)