1 客户端(在spring中配置超时):
如例:
view plaincopy to clipboardprint?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<http-conf:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
<http-conf:client ConnectionTimeout="30000" ReceiveTimeout="60000" />
</http-conf:conduit>
</beans>
首先要注意的事情是<http:conduit>的name属性。
这个name包含服务的命名空间,WSDL的端口(port)名--就是wsdl的<wsdl:port>name属性,以及".http-conduit".
就是下面这个模板:"{WSDL Namespace}portName.http-conduit". 注意:它是端口名称(port name),不是服务名称(service name)。
name值的另一个选择是"*.http-conduit",是URL的正则表达式。例:
<http:conduit name=".*">
</http:conduit>
在localhost:8080上为所有交互配置一个conduit. 在同一个服务端,如果你有多个客户端与不同的服务进行交互,这可能是最
简单的方法。
Namespace
这个元素用于配置一个HTTP客户端,它定义在命名空间:http://cxf.apache.org/transports/http /configuration.
它通常被称为使用前缀http-conf. 为了使用HTTP配置元素,你需要添加下面显示的一行到你的端点配置文件的
beans元素。此外,你还需要添加配置元素的命名空间到xsi : schemaLocaion属性。
例:HTTP 客户端配置命名空间
<beans ....
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration
xsi:schemaLocation="...
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
...>
conduit元素
你使用http-conf:conduit元素和它的子元素配置一个HTTP客户端。 http-conf:conduit元素只有一个属性,name,
它指定对应到端点接口的WSDL port元素. 这个name属性的值是:prtQName.http-conduit.
例如,下面的代码显示http-conf : conduit元素将被用于为一个端点接口添加配置,它指定为wsdl片断
<port binding="widgetSOAPBinding" name="widgetSOAPPort">,如果端点接口的目标命名空间是:
例:http-conf:conduit Element
<http-conf:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-conduit">
....
</http-conf:conduit>
也你能使用通配符来指定http:conduit,你要配置:
<http-conf:conduit name="*.http-conduit">
....
</http:conf:conduit>
http-conf:conduit元素有一些子元素,其中http-conf : client----- 指定http连接属性,如:超时,保持活动的请求,内容类型等。
这个是我们需要的。
这个http-conf:client元素有一些属性,定义超时的有两个:
ConnectionTimeout(连接超时)------ 指定的一个时间量,以毫秒为单位,客户端将在超时之前尝试建立连接。默认是
30000(30秒). 0 指定客户端将继续无限期地尝试打开一个连接。
ReceiveTimeout(接收超时)----- 指定的一个时间量,以毫秒为单位,客户端将在超时之前等待响应。默认是
60000(一分钟). 0 指定客户端将无限期等待。
2 客户端(在java代码直接控制超时配置)
首先你需要从代理对象或客户端得到HTTPConduit, 然后你能设置HTTPClientPolicy,AuthorizationPolicy,
ProxyAuthorizationPolicy,TLSClientParameters,和/或 HttpBasicAuthSupplier.
view plaincopy to clipboardprint? URL wsdl = getClass().getResource("wsdl/greeting.wsdl");
SOAPservice service = new SOAPservice(wsdl,serviceName);
Greeter greeter = service.getPort(portName,Greeter.class); Client client = ClientProxy.getClient(greeter);
HTTPConduit http = (HTTPConduit)client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setReceiveTimeout(32000);
http.setClient(httpClientPolicy); greeter.sayHi("Hello");
3 服务端(在spring中配置)
Namespace
如例(与client差不多,意思也一样):
<beans ...
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration
xsi:schemaLocation="...
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
...>
destination元素
如例(与client差不多,意思也差不多)
....
<http-conf:destination name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-destination>
......
</http-conf:destination>
http-conf:destination元素有个子元素:http-conf:server ------指定HTTP连接属性
<http-conf:server>有属性:ReceiveTimeout-----设置以毫秒为单位的时间长度,服务端在连接超时之前
尝试接收请求。默认是30000(30秒)。 指定服务器将不超时使用0 view plaincopy to clipboardprint?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <http-conf:destination name="{http://apache.org/hello_world_soap_http}SoapPort.http-destination">
<http-conf:server ReceiveTimeout="30000"/>
</http-conf:destination>
</beans>
分享到:
相关推荐
- HTTP客户端的配置包括连接超时、重试策略、认证机制等,这些都可以通过CXF的客户端配置进行定制。 5. **消息构建与处理**: - 当调用服务代理的方法时,CXF会构建SOAP消息,这涉及到数据对象的XML序列化。 - ...
6. **配置管理**:学习如何配置代理设置,如端口、白名单、黑名单、超时设置等。 7. **测试与调试**:了解如何编写单元测试和集成测试,以及如何使用调试工具检查运行时行为。 8. **版本控制与Git**:作为开源项目...
1. 服务提供者端设置超时时间,在 Dubbo 的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。 2. 服务消费者端设置超时时间,如果在消费者端设置了超时时间,以...
这通常通过`HttpClientBuilder`类完成,你可以在这个过程中定制各种设置,如连接超时、重试策略、线程池大小等。 2. **创建HttpRequestBase对象**:HttpClient使用`HttpRequestBase`抽象类的子类(如HttpGet、...
注意,实际应用中可能需要配置更多的属性,如HTTP连接超时、安全设置等。 五、异常处理 在调用Web服务时,可能会遇到网络问题、服务不可用或错误的请求参数等异常情况。因此,应适当地捕获并处理这些异常,例如`...
5. **请求配置**:`RequestConfig`类提供了配置请求行为的方式,如超时时间、重试策略、代理设置等。每个请求可以有自己的配置,也可以全局设置默认配置。 6. **HTTP实体**:HttpClient中的`HttpEntity`接口表示...
理解`PoolingHttpClientConnectionManager`,设置连接池大小,超时和重试策略。 8. **异步请求**:HttpClient 4.4支持异步请求,允许在不阻塞主线程的情况下发送请求。了解如何使用`FutureCallback`和`...