2017-02-20 61 views
16

Chcę zaimplementować klienta JAX-RS obsługującego protokoły HTTP/1.1 i HTTP/2 dla klienta JAX-RS.Obsługa HTTP/1.1 i HTTP/2 za pomocą klienta JAX-RS

Ideą jest użycie protokołu HTTP/2, jeśli serwer obsługuje protokół ALPN z protokołem HTTP/2 i używa protokołu HTTP/1.1, jeśli serwer nie dostarcza żadnych informacji.

Przeczytałem kilka artykułów na temat ALPN i wydaje się, że to możliwe, ale nie znajduję niczego wspierającego ten protokół w tym samym czasie. Nie udało mi się ich połączyć.

Obecnie używam Jetty HTTP/1.1 transport connector for Jersey i custom implementation for HTTP/2 transport connector.

+4

Chcesz [otworzyć numer] (https://github.com/eclipse/jetty.project/issues) na Jetty, aby wesprzeć dynamiczny wybór transportu do użycia na podstawie ALPN. W ten sposób napiszesz tylko jeden transport z Jersey, który obsługuje oba protokoły. Dzięki ! – sbordet

+2

@ sbordet Właśnie utworzyłem [wydanie] (https://github.com/eclipse/jetty.project/issues/1350) –

+0

Czy próbujesz użyć jakichkolwiek połączeń asynchronicznych w swojej aplikacji –

Odpowiedz

0

https://github.com/nhenneaux/jaxrs-http2-example

patrzeć na to jako przykład, ale upewnij się, że nie ma połączenia asynchroniczny.

+0

Jestem opiekunem tego repozytorium, czy napotkałeś jakiś problem z asynchronicznym? W tej chwili używam wtyczki HTTP2 Jetty z tego repozytorium, ale nie obsługuje ona HTTP/1.1 i HTTP/2.0. Obsługuje tylko HTTP/2.0. –

+0

Hi Nicolas, podczas pracy otrzymuję błąd jak javax.ws.rs.ProcessingException: java.util.concurrent.ExecutionException: java.nio.channels.AsynchronousCloseException \t na rest.util.JettyHttp2Connector.apply –

+0

@kapildas I zostały zaktualizowane do Jersey 2.26. Czy mógłbyś spróbować jeszcze raz? Zmieniłem nazwę repozytorium na https://github.com/nhenneaux/jersey-http2-jetty-connector. –