<div dir="ltr">I am reading the code in client package and they look really good. As currently none of the http/2 client library has a work around on alpn boot jar and this blocks majority of developers to move to http/2. I am wondering if you want to split client package to a standalone client module so that it can be used by other developers to connect to servers that implement http/2. If you are interested in it, I can help to create a pull request and add some test cases while I am working on my own client implementation. Thanks.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 19, 2017 at 5:32 PM, Stuart Douglas <span dir="ltr"><<a href="mailto:sdouglas@redhat.com" target="_blank">sdouglas@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You could use Undertow's HTTP/2 client, although it's API was designed<br>
around the reverse proxy use case and as a result is not ideal for the<br>
general purpose HTTP client use case (although it is still perfectly<br>
usable).<br>
<br>
In terms of using Undertow's ALPN implementation with Netty etc it<br>
would require someone to port it over. The code is at [1] if you are<br>
interested.<br>
<br>
Stuart<br>
<br>
[1] <a href="https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/protocols/ssl/ALPNHackSSLEngine.java" rel="noreferrer" target="_blank">https://github.com/undertow-<wbr>io/undertow/blob/master/core/<wbr>src/main/java/io/undertow/<wbr>protocols/ssl/<wbr>ALPNHackSSLEngine.java</a><br>
<div class="HOEnZb"><div class="h5"><br>
On Mon, Mar 20, 2017 at 7:21 AM, Steve Hu <<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>> wrote:<br>
> Thanks Stuart for the quick response. Now I have server started with HTTP/2<br>
> and it works perfect with some client tools. Now I am looking for Java<br>
> HTTP/2 client libraries to update my client module to support HTTP/2<br>
> protocol for microservices communication. There are three major libraries<br>
> okhttp, jetty and netty but all of them require Jetty's ALPN boot JAR. I saw<br>
> you have resolved the boot jar dependency in Undertow and am wondering if<br>
> you could point me to the right direction. Do you have any recommendation<br>
> for HTTP/2 client library? How do you work around the alpn boot jar? Is the<br>
> same solution can be used by okhttp, jetty and netty before Java 9 is<br>
> released?<br>
><br>
><br>
><br>
> On Fri, Mar 17, 2017 at 11:03 PM, Stuart Douglas <<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>><br>
> wrote:<br>
>><br>
>> No, that is a debug level message. The JDK8 ALPN provider should still<br>
>> be registered.<br>
>><br>
>> Stuart<br>
>><br>
>> On Sat, Mar 18, 2017 at 12:18 PM, Steve Hu <<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>> wrote:<br>
>> > Hi,<br>
>> ><br>
>> > I searched this mailing list and one post mentioned that I don't need to<br>
>> > use<br>
>> > -Xbootclasspath/p:<path_to_<wbr>alpn_boot_jar> after 1.4.0Final. I am trying<br>
>> > HTTP/2 on my server with 1.4.10 and Oracle JDK 1.8 but when I start the<br>
>> > server I got the following error. Do I have to use OpenJDK 8? If I<br>
>> > switch to<br>
>> > JBoss OpenSSL implementation?<br>
>> ><br>
>> > Thanks,<br>
>> ><br>
>> > Steve<br>
>> ><br>
>> > 21:00:36.468 [main] DEBUG io.undertow - Configuring listener with<br>
>> > protocol<br>
>> > HTTPS for interface 0.0.0.0 and port 8843<br>
>> ><br>
>> > 21:00:36.486 [main] DEBUG io.undertow - JDK9 ALPN not supported<br>
>> ><br>
>> > java.lang.<wbr>NoSuchMethodException:<br>
>> > javax.net.ssl.SSLParameters.<wbr>setApplicationProtocols([<wbr>Ljava.lang.String;)<br>
>> ><br>
>> > at java.lang.Class.getMethod(<wbr>Class.java:1786)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider$1.run(<wbr>JDK9AlpnProvider.java:47)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider$1.run(<wbr>JDK9AlpnProvider.java:43)<br>
>> ><br>
>> > at java.security.<wbr>AccessController.doPrivileged(<wbr>Native Method)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider.<clinit>(<wbr>JDK9AlpnProvider.java:43)<br>
>> ><br>
>> > at sun.reflect.<wbr>NativeConstructorAccessorImpl.<wbr>newInstance0(Native Method)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > sun.reflect.<wbr>NativeConstructorAccessorImpl.<wbr>newInstance(<wbr>NativeConstructorAccessorImpl.<wbr>java:62)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > sun.reflect.<wbr>DelegatingConstructorAccessorI<wbr>mpl.newInstance(<wbr>DelegatingConstructorAccessorI<wbr>mpl.java:45)<br>
>> ><br>
>> > at java.lang.reflect.Constructor.<wbr>newInstance(Constructor.java:<wbr>423)<br>
>> ><br>
>> > at java.lang.Class.newInstance(<wbr>Class.java:442)<br>
>> ><br>
>> > at<br>
>> > java.util.ServiceLoader$<wbr>LazyIterator.nextService(<wbr>ServiceLoader.java:380)<br>
>> ><br>
>> > at java.util.ServiceLoader$<wbr>LazyIterator.next(<wbr>ServiceLoader.java:404)<br>
>> ><br>
>> > at java.util.ServiceLoader$1.<wbr>next(ServiceLoader.java:480)<br>
>> ><br>
>> > at io.undertow.protocols.alpn.<wbr>ALPNManager.<init>(<wbr>ALPNManager.java:40)<br>
>> ><br>
>> > at io.undertow.protocols.alpn.<wbr>ALPNManager.<clinit>(<wbr>ALPNManager.java:35)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > io.undertow.server.protocol.<wbr>http.AlpnOpenListener.<init>(<wbr>AlpnOpenListener.java:67)<br>
>> ><br>
>> > at<br>
>> ><br>
>> > io.undertow.server.protocol.<wbr>http.AlpnOpenListener.<init>(<wbr>AlpnOpenListener.java:90)<br>
>> ><br>
>> > at io.undertow.Undertow.start(<wbr>Undertow.java:179)<br>
>> ><br>
>> > at com.networknt.server.Server.<wbr>start(Server.java:170)<br>
>> ><br>
>> > at com.networknt.server.Server.<wbr>main(Server.java:90)<br>
>> ><br>
>> > 21:00:36.503 [main] INFO com.networknt.server.Server - Https Server<br>
>> > started on ip:0.0.0.0 Port:8843<br>
>> ><br>
>> ><br>
>> > ______________________________<wbr>_________________<br>
>> > undertow-dev mailing list<br>
>> > <a href="mailto:undertow-dev@lists.jboss.org">undertow-dev@lists.jboss.org</a><br>
>> > <a href="https://lists.jboss.org/mailman/listinfo/undertow-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/undertow-dev</a><br>
><br>
><br>
</div></div></blockquote></div><br></div>