cxf客户端设置超时

cxf  客户端设置超时

 

 

 QueryValidatorServicesService ss = new QueryValidatorServicesService(getWsdlURL(), SERVICE_NAME);
 QueryValidatorServices port =ss.getPort(QueryValidatorServices.class);
        //设置超时
		int connectionTimeout=Integer.valueOf(EdsPropertiesUtil.getInstance().getProperty("gzt.connectionTimeout"));
		int receiveTimeout=Integer.valueOf(EdsPropertiesUtil.getInstance().getProperty("gzt.receiveTimeout"));
        Client client = ClientProxy.getClient(port);
        HTTPConduit http = (HTTPConduit) client.getConduit();
        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
        httpClientPolicy.setConnectionTimeout(connectionTimeout);
        httpClientPolicy.setAllowChunking(false);
        httpClientPolicy.setReceiveTimeout(receiveTimeout);
        http.setClient(httpClientPolicy);

 

 

### 如何在 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、付费专栏及课程。

余额充值