小编Not*_*ick的帖子

验证CXF HttpAsyncClient使用use.async.http.conduit上下文属性

我正在尝试使用CXF异步HTTP客户端传输,通过设置"use.async.http.conduit"属性,如此线程中所详述,并由此CXF文章推荐.

我使用以下代码执行此操作:


Client client = ClientProxy.getClient(wsClient);
client.getRequestContext().put("use.async.http.conduit", Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)


碰巧,我的Web服务调用超时(可能是由于一些环境网络问题),我的客户端异常包含(提取):


java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:698)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:641)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1218)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
    at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.getResponseCode(URLConnectionHTTPConduit.java:260)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1513)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1486)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1305)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:623)
Run Code Online (Sandbox Code Playgroud)

上面的异常堆栈表明java.net.HttpURLConnection该类仍在使用中,并且基于CXF文档,该设置尚未生效.

我想弄清楚的是如何确保"use.async.http.conduit"生效,即是否存在可以测试的特定行为,或者我可以在客户端上启用的特定日志配置毫无疑问会告诉我Apache HttpAsyncClient正在使用中吗?

非常感谢 :)

java asynchronous web-services cxf httpurlconnection

3
推荐指数
1
解决办法
3512
查看次数