gpt4 book ai didi

java - 将 HTTP/2 与 JAX-RS 客户端一起使用

转载 作者:行者123 更新时间:2023-11-29 04:38:24 25 4
gpt4 key购买 nike

我正在尝试使用 JAX-RS HTTP/2 服务器和客户端。服务器端可以工作,但我无法使用 JAX-RS 抽象使客户端正常工作。我使用 Jersey2 JAX-RS 实现和嵌入式 Jetty HTTP 服务器。我还使用 Jersey 代理客户端通过接口(interface)直接使用 API。客户端的构建方法如下。

import org.glassfish.jersey.client.proxy.WebResourceFactory;
import javax.ws.rs.client.ClientBuilder;

(...)
<T> T getClient(int port, Class<T> resourceInterface) {
return WebResourceFactory.newResource(
resourceInterface,
ClientBuilder.newBuilder()
.build()
.target("https://localhost:" + port)
);
}

您有使用相同抽象级别的解决方案吗?

编辑

根据@sbordet 的回答,我实现了一个基于 JettyClient 的支持 HTTP/2 的客户端连接器。代码在 GitHub Artifact 在 Maven Central 上.

最佳答案

Jersey 允许使用 transport connectors 自定义传输.

已经有一个使用 Jetty 的 HttpClient 的 Jersey 客户端传输,但它被配置为使用 HTTP/1.1,而不是 HTTP/2,参见 https://github.com/jersey/jersey/blob/master/connectors/jetty-connector/src/main/java/org/glassfish/jersey/jetty/connector/JettyConnector.java .

我猜你的选择是自己实现一个 Jersey ConnectorProvider 和一个 Connector,主要基于那些已经可用的,但是将 HTTP/2 传输配置为在 jetty 解释documentation ;或要求 Jersey 开发人员在现有 JettyConnector 中创建 HttpClient 实例可覆盖,以便您可以自定义 HttpClient 传输HTTP/2 之一。

请注意,如果您使用 HTTP/2,您将需要支持 ALPN,如 this documentation 中所述。 .

关于java - 将 HTTP/2 与 JAX-RS 客户端一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com