java http jersey jetty http2

java - Admite HTTP/1.1 y HTTP/2 con un cliente JAX-RS



jersey jetty (4)

Quiero implementar un cliente JAX-RS que admita HTTP / 1.1 y HTTP / 2 para un cliente JAX-RS.

La idea es utilizar HTTP / 2 si el servidor admite ALPN con HTTP / 2 y utiliza HTTP / 1.1 si el servidor no proporciona ninguna información.

He leído algunos artículos sobre ALPN y parece ser posible, pero no encuentro nada que respalde este protocolo al mismo tiempo. No logré conectar estos juntos.

Actualmente estoy usando el conector de transporte Jetty HTTP / 1.1 para Jersey y una implementación personalizada para el conector de transporte HTTP / 2 .



Si esta pregunta aún está abierta para contribuir, entonces hay una forma de implementar el cliente con la versión <JDK 9.

Como saben, HTTP / 2 requiere soporte ALPN si usa TLSv1.2 (h2).

netty paquete netty tiene algún soporte para HTTP / 2 siempre que tenga openssl (versión 1.0.2 o posterior) instalado en la plataforma.

El paquete Netty utilizará OpenSSL para el soporte de ALPN invocando bibliotecas nativas.

Implementamos un cliente con JDK8 y conseguimos generar una solicitud http2 para operación donde el servidor solo acepta la solicitud http2. Usamos a continuación la dependencia mencionada.

<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <!--<version>5.0.0.Alpha2</version> --> <version>4.1.29.Final</version> </dependency>


Una solución podría ser usar nginx (o apache2) como proxy inverso para manejar ese requisito.

Nginx puede usar su servidor Jetty (usando http / 1.1 o http / 2 solo protcol) y el servidor http / 2 con alpn (con la última versión) para los clientes.