Jax rs 客户端池

2024-01-07

我正在努力使用 jax-rs 2 客户端 API 设置 REST 客户端。 在 api 文档中,它说“客户端是管理客户端通信基础设施的重量级对象。客户端实例的初始化和处置可能是一个相当昂贵的操作。因此建议仅构建少量客户端应用程序中的实例。” (https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Client.html https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Client.html)。根据此声明,听起来客户端不是线程安全的,我不应该对所有请求使用单个客户端实例。

我正在使用 CXF 实现,到目前为止我还没有找到为客户端对象设置池的方法。

如果有人有任何信息,请分享。

提前致谢。


默认情况下,CXF 使用基于 JDK 内 HttpURLConnection 对象的传输来执行 HTTP 请求。

执行连接池允许持久连接为多个 http 请求重用底层套接字连接。

设置这些系统属性来配置池(默认值)

http.keepalive=true
http.maxConnections=5

增加 http.maxConnections 的值以设置每个目标同时保持活动状态的最大空闲连接数。见此link https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#MiscHTTP完整的属性列表properties.html

在这篇文章中详细解释了它是如何工作的

Java HttpURLConnection 和池化 https://stackoverflow.com/questions/35208950/java-httpurlconnection-and-pooling

另请注意,默认的 JAX-RS 客户端默认情况下不是线程安全的。检查正确使用的限制here http://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-ThreadSafety

当需要同时执行多个请求时,CXF 还可以使用异步 apache HttpAsyncClient。序列号详细信息在这里

http://cxf.apache.org/docs/asynchronous-client-http-transport.html http://cxf.apache.org/docs/asynchronous-client-http-transport.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jax rs 客户端池 的相关文章

随机推荐