【问题标题】:CXF asynchronous client with RESTful web service带有 RESTful Web 服务的 CXF 异步客户端
【发布时间】:2013-11-07 20:57:13
【问题描述】:

我有一个使用 CXF 与 restful web 服务交互的客户端。我想使用 CXF 从 2.7.0 开始提供的异步模式 http://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxrs/client/WebClient.html。我还没有真正找到使用此功能的客户端的好示例

以前我的代码会做这样的事情

Response response = webclient.get();

更新代码:

Future<Response> responseFuture = webclient.async().get();
// code to get future response ...

我的问题:

  • 这就是我需要做的所有事情吗?客户行为将如何改变?我的理解是,以前它会为每个客户端请求创建一个单独的线程。现在它将使用单个线程或线程池执行多个请求?

  • 另外,对我来说,在两种不同情况下监控它在后台执行的操作的最佳方式是什么?

【问题讨论】:

    标签: java rest cxf jax-rs


    【解决方案1】:

    嗯,是的,也不是。

    这就是您在代码中需要做的所有事情,是的。但是,默认情况下,CXF 仍将使用 HttpURLConnection 对象,每个请求都需要一个专用线程。因此,在幕后,它会为此使用 CXF 的线程池。

    但是,您可以添加 CXF 的基于异步的传输(请参阅http://cxf.apache.org/docs/asynchronous-client-http-transport.html),这将允许使用很少的线程来处理数百个未完成的请求。

    【讨论】:

    • 好的,感谢您提供的信息。所以我有了新代码,所需的 CXF 和 HttpAsyncClient jar 在我的类路径中。然而,它似乎仍然只是在幕后使用 HttpURLConnection。根据文档,它应该在类路径上自动使用异步客户端。我已经向 HttpURLConnection 和 HttpAsyncClient 添加了断点,以尝试分析在运行时使用的断点。关于我在这里可能做错了什么的任何建议或指向逻辑决定使用哪种类型的连接的指针?
    • 你做了异步工作吗?我认为您需要在 CXF 中明确设置异步模式?提前致谢
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2012-08-07
    相关资源
    最近更新 更多