读书人

CXF客户端请求超时配备

发布时间: 2012-07-15 20:20:05 作者: rapoo

CXF客户端请求超时配置

转自:http://xiaofengtoo.iteye.com/blog/1123583

?

在用cxf? 开发webservice应用时,客户端老报

java.net.SocketTimeoutException: Read timed out

原因为连接超时,google 参考链接

Spring下设置CXF的WebService客户端超时时长http://ajava.org/course/open/16514.html

https://cwiki.apache.org/CXF20DOC/client-http-transport-including-ssl-support.html? (官方)

?

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd "> <http-conf:conduit name="{http://impl.service.product.super.com/}ProjectService.http-conduit"> <http-conf:client ConnectionTimeout="10000" ReceiveTimeout="20000"/> </http-conf:conduit> </beans>

    ?

      Client client = ClientProxy.getClient(port); HTTPConduit http = (HTTPConduit) client.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(36000); httpClientPolicy.setAllowChunking(false); httpClientPolicy.setReceiveTimeout(32000); http.setClient(httpClientPolicy);

      ?另外,WSDL中的endpoint的地址不一定是有效的,为避免客户端请求使用该地址,我们在请求前应通过以下方式强行设置为可用的服务地址。
      ? ((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,serviceUrl);

读书人网 >软件架构设计

热点推荐