我正在为 Web 服务客户端使用 cxf 库。
当响应迟到大约 5 秒时,cxf 需要大约 20 秒才能返回响应。 ws 返回一个 33912 长响应。
虽然客户对快速响应没有问题。
我找不到问题所在。我测试了 ws 端点,它在 8 秒内返回最大值。但 cxf 客户端有时需要 30-50 秒。
我打开调试日志,这两行之间需要 9 秒
2018-01-11 17:17:14.022 DEBUG 10492 --- [nio-8086-exec-6] o.apache.cxf.transport.http.HTTPConduit : Sending POST Message with Headers to http://example.com/service Conduit :{http://example.com./}ExampleWebServicePort.http-conduit
2018-01-11 17:17:23.370 DEBUG 10492 --- [nio-8086-exec-6] org.apache.cxf.endpoint.ClientImpl : Interceptors contributed by bus: [org.apache.cxf.ws.policy.PolicyInInterceptor@3ec595ab]
这是客户端:
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
httpConduit.setAuthSupplier(null);
httpConduit.setAuthorization(null);
HTTPClientPolicy clientPolicy = new HTTPClientPolicy();
clientPolicy.setConnectionTimeout(60000L);
clientPolicy.setReceiveTimeout(60000L);
httpConduit.setClient(clientPolicy);
什么可能导致这个问题?
最佳答案
问题是我认为服务器响应很快,但我在测试时使用了错误的端点。
当我测试正确的端点时,我意识到服务器确实响应晚了。
客户端的响应时间与服务器的响应时间匹配。
关于java - 当响应迟到时,Cxf 客户端花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205331/