CXF 客户端超时时间设置(非Spring配置方式)

本文介绍如何在不使用Spring配置的情况下,设置CXF客户端的超时时间。通过Java直接调用ASP.NET Webservice,并提供具体设置超时时间的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在找CXF客户端超时时间设置的例子,但是网上搜出来的都是通过Spring配置。找了很久,也琢磨了很久。终于可以不用Spring配置来实现客户端超时时间的设置了。

例子:我这个是java 调用Asp.net的Webservice例子

       

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import javax.xml.namespace.QName;
import org.tempuri.DHLServiceSoap;

public String invokeIPEXService(String data, String dataType) {
   //创建WebService客户端代理工厂
   JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
   //注册WebService接口
   factory.setServiceClass(DHLServiceSoap.class);  
   //设置WebService地址 
   factory.setAddress(url); 
   //QName函数的两个参数,第一个是命名空间,第二个是webservice的服务名  
   //第一个参数在.net服务发布时可以找到,也就是targetnamespace,  
   //第二个参数在java的接口实现类中可以找到
### 如何在 Apache CXF 3.2 中设置超时 对于希望调整 Apache CXF 客户端请求和服务连接超时的情况,在代码层面可以通过 `BindingProvider` 接口来实现这一需求。具体来说,通过获取 Web Service 客户端接口的 `BindingProvider` 实现类实例,并调用其方法访问请求上下文环境,进而设定特定键值对以控制超时行为。 ```java // 设置请求超时时间为10秒(毫秒单位) ((javax.xml.ws.BindingProvider) port).getRequestContext() .put("request.timeout", 10000L); // 设置连接建立超时时间为10秒(毫秒单位) ((javax.xml.ws.BindingProvider) port).getRequestContext() .put("connection.timeout", 10000L); ``` 值得注意的是,针对不同版本的 JAX-WS 参考实现(RI),可能需要使用不同的属性名称来进行配置[^1]。例如: ```java ((javax.xml.ws.BindingProvider)port).getRequestContext().put( "com.sun.xml.internal.ws.request.timeout", 10000); ((javax.xml.ws.BindingProvider)port).getRequestContext().put( "com.sun.xml.internal.ws.connect.timeout", 10000); ``` 然而,上述内部 Sun 属性主要用于 Oracle JDK 或 OpenJDK 的内置 JAX-WS RI;而在使用 Apache CXF 作为 JAX-WS 提供者的情况下,则应优先考虑官方推荐的方式即前一种做法[^3]。 另外,如果是在 Spring 配置环境中集成 CXF 组件并希望通过 XML 文件指定这些参数的话,可以在 spring-config.xml 类似的文件里定义 bean 初始化参数或利用自定义拦截器完成此操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值