<div dir="ltr">Thanks Stuart for the examples. I have created two more post test cases for UndertowHttp2Client for both clean text and tls. They are all working but with some debug level exceptions. Will these exceptions be removed later? Or is there any way I can avoid these exceptions? <div><div><br></div><div><br></div><div><div>19:30:17,688 DEBUG (main) [<a href="http://io.undertow.request.io">io.undertow.request.io</a>] &lt;Http2Channel.java:753&gt; Sending goaway on channel Http2Channel peer localhost/<a href="http://127.0.0.1:7777">127.0.0.1:7777</a> local /127.0.0.1:60969[ No Receiver [] -- [] -- []]: java.nio.channels.ClosedChannelException</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:753)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:744)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.client.http2.Http2ClientConnection.close(Http2ClientConnection.java:312)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.IoUtils.safeClose(IoUtils.java:134)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.client.http.Http2ClientTestCase.testSimpleHttp(Http2ClientTestCase.java:176)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at java.lang.reflect.Method.invoke(Method.java:498)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runners.ParentRunner.run(ParentRunner.java:363)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.junit.runner.JUnitCore.run(JUnitCore.java:137)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at java.lang.reflect.Method.invoke(Method.java:498)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)</div><div><br></div><div>19:30:17,693 DEBUG (XNIO-1 I/O-1) [<a href="http://io.undertow.request.io">io.undertow.request.io</a>] &lt;Http2Channel.java:753&gt; Sending goaway on channel Http2Channel peer /<a href="http://127.0.0.1:60969">127.0.0.1:60969</a> local /127.0.0.1:7777[ No Receiver [] -- [] -- []]: java.nio.channels.ClosedChannelException</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:753)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:744)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannelImpl(Http2Channel.java:478)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannel(Http2Channel.java:317)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannel(Http2Channel.java:65)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel.receive(AbstractFramedChannel.java:452)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:106)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:57)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:931)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:912)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.WorkerThread.run(WorkerThread.java:559)</div><div><br></div><div>19:30:17,694 DEBUG (Client I/O-4) [<a href="http://io.undertow.request.io">io.undertow.request.io</a>] &lt;AbstractFramedChannel.java:791&gt; Channel Http2Channel peer localhost/<a href="http://127.0.0.1:7777">127.0.0.1:7777</a> local /127.0.0.1:60969[ No Receiver [] -- [] -- []] is being closed: java.nio.channels.ClosedChannelException</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel.close(AbstractFramedChannel.java:791)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.IoUtils.safeClose(IoUtils.java:134)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel$3.handleEvent(Http2Channel.java:762)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners$14.handleEvent(ChannelListeners.java:421)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners$14.handleEvent(ChannelListeners.java:409)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1.run(AbstractFramedStreamSinkChannel.java:212)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel$3.run(AbstractFramedChannel.java:231)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:580)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.WorkerThread.run(WorkerThread.java:464)</div><div><br></div><div>19:30:17,694 DEBUG (XNIO-1 I/O-1) [<a href="http://io.undertow.request.io">io.undertow.request.io</a>] &lt;AbstractFramedChannel.java:791&gt; Channel Http2Channel peer /<a href="http://127.0.0.1:60969">127.0.0.1:60969</a> local /127.0.0.1:7777[ No Receiver [] -- [] -- []] is being closed: java.nio.channels.ClosedChannelException</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel.close(AbstractFramedChannel.java:791)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.IoUtils.safeClose(IoUtils.java:134)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:767)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:744)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannelImpl(Http2Channel.java:478)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannel(Http2Channel.java:317)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.protocols.http2.Http2Channel.createChannel(Http2Channel.java:65)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel.receive(AbstractFramedChannel.java:452)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:106)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:57)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:931)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:912)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>at org.xnio.nio.WorkerThread.run(WorkerThread.java:559)</div></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 22, 2017 at 9:40 PM, Stuart Douglas <span dir="ltr">&lt;<a href="mailto:sdouglas@redhat.com" target="_blank">sdouglas@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have added one:<br>
<a href="https://github.com/undertow-io/undertow/commit/20be7eb052a1efd44c8a1e6981f269344174543a#diff-f92c46f6546a565ef565e205b726ccf8R174" rel="noreferrer" target="_blank">https://github.com/undertow-<wbr>io/undertow/commit/<wbr>20be7eb052a1efd44c8a1e6981f269<wbr>344174543a#diff-<wbr>f92c46f6546a565ef565e205b726cc<wbr>f8R174</a><br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Mar 23, 2017 at 11:07 AM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt; wrote:<br>
&gt; Hi Stuart,<br>
&gt;<br>
&gt; I am trying to find an example or test case that uses http post for<br>
&gt; HttpClient but couldn&#39;t find anything. The only information is the comment<br>
&gt; of ClientRequest. Could you please provide an example on how to push body in<br>
&gt; a post ClientRequest?<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Steve<br>
&gt;<br>
&gt; * This class only represents the HTTP header, it does not represent an<br>
&gt; entity body. If the request needs an entity<br>
&gt; * body then this must be specified by either setting a Content-Length or<br>
&gt; Transfer-Encoding header, otherwise<br>
&gt; * the client will assume that the body is empty.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Mar 22, 2017 at 5:01 PM, Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; The issue is that it is reporting the wrong protocol in the response,<br>
&gt;&gt; I have fixed this upstream.<br>
&gt;&gt;<br>
&gt;&gt; Stuart<br>
&gt;&gt;<br>
&gt;&gt; On Thu, Mar 23, 2017 at 1:31 AM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi Stuart,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks for the upgrade handler fix. I can clearly see the handler is<br>
&gt;&gt; &gt; registered and handleRequest is called in a debug session. I also<br>
&gt;&gt; &gt; replaced<br>
&gt;&gt; &gt; EMPTY option with OptionMap.create(<wbr>UndertowOptions.ENABLE_HTTP2, true)<br>
&gt;&gt; &gt; when<br>
&gt;&gt; &gt; opening client connection. The response protocol is still HTTP/1.1 for<br>
&gt;&gt; &gt; both<br>
&gt;&gt; &gt; http and https requests. The following is the output from the console<br>
&gt;&gt; &gt; and<br>
&gt;&gt; &gt; the syched/updated source code can be found<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; <a href="https://github.com/stevehu/undertow/blob/master/core/src/test/java/io/undertow/client/http/Http2ClientTestCase.java" rel="noreferrer" target="_blank">https://github.com/stevehu/<wbr>undertow/blob/master/core/src/<wbr>test/java/io/undertow/client/<wbr>http/Http2ClientTestCase.java</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:16:43,804 INFO  (main) [org.xnio] &lt;Xnio.java:99&gt; XNIO version<br>
&gt;&gt; &gt; 3.3.6.Final<br>
&gt;&gt; &gt; 10:16:43,829 INFO  (main) [org.xnio.nio] &lt;NioXnio.java:55&gt; XNIO NIO<br>
&gt;&gt; &gt; Implementation Version 3.3.6.Final<br>
&gt;&gt; &gt; 10:17:42,980 DEBUG (main) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;Http2Channel.java:753&gt;<br>
&gt;&gt; &gt; Sending goaway on channel Http2Channel peer localhost/<a href="http://127.0.0.1:7778" rel="noreferrer" target="_blank">127.0.0.1:7778</a><br>
&gt;&gt; &gt; local<br>
&gt;&gt; &gt; /127.0.0.1:64696[ No Receiver [] -- [] -- []]:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:753)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http2.<wbr>Http2ClientConnection.close(<wbr>Http2ClientConnection.java:<wbr>312)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http.<wbr>Http2ClientTestCase.<wbr>testHttpsConnectionClose(<wbr>Http2ClientTestCase.java:245)<br>
&gt;&gt; &gt; at sun.reflect.<wbr>NativeMethodAccessorImpl.<wbr>invoke0(Native Method)<br>
&gt;&gt; &gt; HTTP/1.1<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; sun.reflect.<wbr>NativeMethodAccessorImpl.<wbr>invoke(<wbr>NativeMethodAccessorImpl.java:<wbr>62)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; sun.reflect.<wbr>DelegatingMethodAccessorImpl.<wbr>invoke(<wbr>DelegatingMethodAccessorImpl.<wbr>java:43)<br>
&gt;&gt; &gt; at java.lang.reflect.Method.<wbr>invoke(Method.java:498)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.model.<wbr>FrameworkMethod$1.<wbr>runReflectiveCall(<wbr>FrameworkMethod.java:50)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>model.ReflectiveCallable.run(<wbr>ReflectiveCallable.java:12)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.model.<wbr>FrameworkMethod.<wbr>invokeExplosively(<wbr>FrameworkMethod.java:47)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.InvokeMethod.<wbr>evaluate(InvokeMethod.java:17)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.runLeaf(<wbr>ParentRunner.java:325)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.<wbr>BlockJUnit4ClassRunner.<wbr>runChild(<wbr>BlockJUnit4ClassRunner.java:<wbr>78)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.<wbr>BlockJUnit4ClassRunner.<wbr>runChild(<wbr>BlockJUnit4ClassRunner.java:<wbr>57)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$3.run(<wbr>ParentRunner.java:290)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$1.schedule(<wbr>ParentRunner.java:71)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.runChildren(<wbr>ParentRunner.java:288)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.access$000(<wbr>ParentRunner.java:58)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$2.evaluate(<wbr>ParentRunner.java:268)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.RunBefores.<wbr>evaluate(RunBefores.java:26)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.RunAfters.evaluate(<wbr>RunAfters.java:27)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.run(ParentRunner.<wbr>java:363)<br>
&gt;&gt; &gt; at org.junit.runner.JUnitCore.<wbr>run(JUnitCore.java:137)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.junit4.<wbr>JUnit4IdeaTestRunner.<wbr>startRunnerWithArgs(<wbr>JUnit4IdeaTestRunner.java:117)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.junit4.<wbr>JUnit4IdeaTestRunner.<wbr>startRunnerWithArgs(<wbr>JUnit4IdeaTestRunner.java:42)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.rt.execution.<wbr>junit.JUnitStarter.<wbr>prepareStreamsAndStart(<wbr>JUnitStarter.java:262)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; com.intellij.rt.execution.<wbr>junit.JUnitStarter.main(<wbr>JUnitStarter.java:84)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:17:42,986 DEBUG (Client I/O-7) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;AbstractFramedChannel.java:<wbr>791&gt; Channel Http2Channel peer<br>
&gt;&gt; &gt; localhost/<a href="http://127.0.0.1:7778" rel="noreferrer" target="_blank">127.0.0.1:7778</a> local /127.0.0.1:64696[ No Receiver [] -- [] --<br>
&gt;&gt; &gt; []]<br>
&gt;&gt; &gt; is being closed: java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>close(AbstractFramedChannel.<wbr>java:791)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel$3.handleEvent(<wbr>Http2Channel.java:762)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at org.xnio.ChannelListeners$14.<wbr>handleEvent(ChannelListeners.<wbr>java:421)<br>
&gt;&gt; &gt; at org.xnio.ChannelListeners$14.<wbr>handleEvent(ChannelListeners.<wbr>java:409)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.<wbr>AbstractFramedStreamSinkChanne<wbr>l$1.run(<wbr>AbstractFramedStreamSinkChanne<wbr>l.java:212)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>3.run(AbstractFramedChannel.<wbr>java:231)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.<wbr>safeRun(WorkerThread.java:580)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:464)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:17:42,986 DEBUG (XNIO-1 I/O-7) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;Http2Channel.java:753&gt; Sending goaway on channel Http2Channel peer<br>
&gt;&gt; &gt; /<a href="http://127.0.0.1:64696" rel="noreferrer" target="_blank">127.0.0.1:64696</a> local /127.0.0.1:7778[ No Receiver [] -- [] -- []]:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:753)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.<wbr>createChannelImpl(<wbr>Http2Channel.java:478)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:317)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:65)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>receive(AbstractFramedChannel.<wbr>java:452)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:106)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:57)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>931)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>912)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.xnio.conduits.<wbr>ReadReadyHandler$<wbr>ChannelListenerHandler.<wbr>readReady(ReadReadyHandler.<wbr>java:66)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.ssl.<wbr>SslConduit$<wbr>SslReadReadyHandler.readReady(<wbr>SslConduit.java:1129)<br>
&gt;&gt; &gt; at org.xnio.nio.NioSocketConduit.<wbr>handleReady(NioSocketConduit.<wbr>java:88)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:559)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:17:42,988 DEBUG (XNIO-1 I/O-7) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;AbstractFramedChannel.java:<wbr>791&gt; Channel Http2Channel peer<br>
&gt;&gt; &gt; /<a href="http://127.0.0.1:64696" rel="noreferrer" target="_blank">127.0.0.1:64696</a><br>
&gt;&gt; &gt; local /127.0.0.1:7778[ No Receiver [] -- [] -- []] is being closed:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>close(AbstractFramedChannel.<wbr>java:791)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:767)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.<wbr>createChannelImpl(<wbr>Http2Channel.java:478)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:317)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:65)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>receive(AbstractFramedChannel.<wbr>java:452)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:106)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:57)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>931)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>912)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.xnio.conduits.<wbr>ReadReadyHandler$<wbr>ChannelListenerHandler.<wbr>readReady(ReadReadyHandler.<wbr>java:66)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.ssl.<wbr>SslConduit$<wbr>SslReadReadyHandler.readReady(<wbr>SslConduit.java:1129)<br>
&gt;&gt; &gt; at org.xnio.nio.NioSocketConduit.<wbr>handleReady(NioSocketConduit.<wbr>java:88)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:559)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:17:43,001 DEBUG (Client I/O-7) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;Http2ClientConnection.java:<wbr>458&gt; UT005013: An IOException occurred:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http2.<wbr>Http2ClientConnection$<wbr>Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ClientConnection.java:<wbr>452)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http2.<wbr>Http2ClientConnection$<wbr>Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ClientConnection.java:<wbr>366)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>931)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>912)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.xnio.conduits.<wbr>ReadReadyHandler$<wbr>ChannelListenerHandler.<wbr>readReady(ReadReadyHandler.<wbr>java:66)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.ssl.<wbr>SslConduit$<wbr>SslReadReadyHandler.readReady(<wbr>SslConduit.java:1129)<br>
&gt;&gt; &gt; at io.undertow.protocols.ssl.<wbr>SslConduit$1.run(SslConduit.<wbr>java:168)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.<wbr>safeRun(WorkerThread.java:580)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:464)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; HTTP/1.1<br>
&gt;&gt; &gt; 10:20:14,473 DEBUG (main) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;Http2Channel.java:753&gt;<br>
&gt;&gt; &gt; Sending goaway on channel Http2Channel peer localhost/<a href="http://127.0.0.1:7777" rel="noreferrer" target="_blank">127.0.0.1:7777</a><br>
&gt;&gt; &gt; local<br>
&gt;&gt; &gt; /127.0.0.1:64697[ No Receiver [] -- [] -- []]:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:753)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http2.<wbr>Http2ClientConnection.close(<wbr>Http2ClientConnection.java:<wbr>312)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.client.http.<wbr>Http2ClientTestCase.<wbr>testHttpConnectionClose(<wbr>Http2ClientTestCase.java:220)<br>
&gt;&gt; &gt; at sun.reflect.<wbr>NativeMethodAccessorImpl.<wbr>invoke0(Native Method)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; sun.reflect.<wbr>NativeMethodAccessorImpl.<wbr>invoke(<wbr>NativeMethodAccessorImpl.java:<wbr>62)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; sun.reflect.<wbr>DelegatingMethodAccessorImpl.<wbr>invoke(<wbr>DelegatingMethodAccessorImpl.<wbr>java:43)<br>
&gt;&gt; &gt; at java.lang.reflect.Method.<wbr>invoke(Method.java:498)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.model.<wbr>FrameworkMethod$1.<wbr>runReflectiveCall(<wbr>FrameworkMethod.java:50)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>model.ReflectiveCallable.run(<wbr>ReflectiveCallable.java:12)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.model.<wbr>FrameworkMethod.<wbr>invokeExplosively(<wbr>FrameworkMethod.java:47)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.InvokeMethod.<wbr>evaluate(InvokeMethod.java:17)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.runLeaf(<wbr>ParentRunner.java:325)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.<wbr>BlockJUnit4ClassRunner.<wbr>runChild(<wbr>BlockJUnit4ClassRunner.java:<wbr>78)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.runners.<wbr>BlockJUnit4ClassRunner.<wbr>runChild(<wbr>BlockJUnit4ClassRunner.java:<wbr>57)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$3.run(<wbr>ParentRunner.java:290)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$1.schedule(<wbr>ParentRunner.java:71)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.runChildren(<wbr>ParentRunner.java:288)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.access$000(<wbr>ParentRunner.java:58)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner$2.evaluate(<wbr>ParentRunner.java:268)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.RunBefores.<wbr>evaluate(RunBefores.java:26)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.junit.internal.runners.<wbr>statements.RunAfters.evaluate(<wbr>RunAfters.java:27)<br>
&gt;&gt; &gt; at org.junit.runners.<wbr>ParentRunner.run(ParentRunner.<wbr>java:363)<br>
&gt;&gt; &gt; at org.junit.runner.JUnitCore.<wbr>run(JUnitCore.java:137)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.junit4.<wbr>JUnit4IdeaTestRunner.<wbr>startRunnerWithArgs(<wbr>JUnit4IdeaTestRunner.java:117)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.junit4.<wbr>JUnit4IdeaTestRunner.<wbr>startRunnerWithArgs(<wbr>JUnit4IdeaTestRunner.java:42)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; com.intellij.rt.execution.<wbr>junit.JUnitStarter.<wbr>prepareStreamsAndStart(<wbr>JUnitStarter.java:262)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; com.intellij.rt.execution.<wbr>junit.JUnitStarter.main(<wbr>JUnitStarter.java:84)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:20:14,474 DEBUG (Client I/O-4) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;AbstractFramedChannel.java:<wbr>791&gt; Channel Http2Channel peer<br>
&gt;&gt; &gt; localhost/<a href="http://127.0.0.1:7777" rel="noreferrer" target="_blank">127.0.0.1:7777</a> local /127.0.0.1:64697[ No Receiver [] -- [] --<br>
&gt;&gt; &gt; []]<br>
&gt;&gt; &gt; is being closed: java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>close(AbstractFramedChannel.<wbr>java:791)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel$3.handleEvent(<wbr>Http2Channel.java:762)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at org.xnio.ChannelListeners$14.<wbr>handleEvent(ChannelListeners.<wbr>java:421)<br>
&gt;&gt; &gt; at org.xnio.ChannelListeners$14.<wbr>handleEvent(ChannelListeners.<wbr>java:409)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at org.xnio.ChannelListeners$4.<wbr>run(ChannelListeners.java:147)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.<wbr>safeRun(WorkerThread.java:580)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:464)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:20:14,474 DEBUG (XNIO-1 I/O-1) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;Http2Channel.java:753&gt; Sending goaway on channel Http2Channel peer<br>
&gt;&gt; &gt; /<a href="http://127.0.0.1:64697" rel="noreferrer" target="_blank">127.0.0.1:64697</a> local /127.0.0.1:7777[ No Receiver [] -- [] -- []]:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:753)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.<wbr>createChannelImpl(<wbr>Http2Channel.java:478)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:317)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:65)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>receive(AbstractFramedChannel.<wbr>java:452)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:106)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:57)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>931)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>912)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.xnio.conduits.<wbr>ReadReadyHandler$<wbr>ChannelListenerHandler.<wbr>readReady(ReadReadyHandler.<wbr>java:66)<br>
&gt;&gt; &gt; at org.xnio.nio.NioSocketConduit.<wbr>handleReady(NioSocketConduit.<wbr>java:88)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:559)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 10:20:14,476 DEBUG (XNIO-1 I/O-1) [<a href="http://io.undertow.request.io" rel="noreferrer" target="_blank">io.undertow.request.io</a>]<br>
&gt;&gt; &gt; &lt;AbstractFramedChannel.java:<wbr>791&gt; Channel Http2Channel peer<br>
&gt;&gt; &gt; /<a href="http://127.0.0.1:64697" rel="noreferrer" target="_blank">127.0.0.1:64697</a><br>
&gt;&gt; &gt; local /127.0.0.1:7777[ No Receiver [] -- [] -- []] is being closed:<br>
&gt;&gt; &gt; java.nio.channels.<wbr>ClosedChannelException<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>close(AbstractFramedChannel.<wbr>java:791)<br>
&gt;&gt; &gt; at org.xnio.IoUtils.safeClose(<wbr>IoUtils.java:134)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:767)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.sendGoAway(<wbr>Http2Channel.java:744)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.<wbr>createChannelImpl(<wbr>Http2Channel.java:478)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:317)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.protocols.http2.<wbr>Http2Channel.createChannel(<wbr>Http2Channel.java:65)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel.<wbr>receive(AbstractFramedChannel.<wbr>java:452)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:106)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>http2.Http2ReceiveListener.<wbr>handleEvent(<wbr>Http2ReceiveListener.java:57)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>931)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; io.undertow.server.protocol.<wbr>framed.AbstractFramedChannel$<wbr>FrameReadListener.handleEvent(<wbr>AbstractFramedChannel.java:<wbr>912)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt; org.xnio.ChannelListeners.<wbr>invokeChannelListener(<wbr>ChannelListeners.java:92)<br>
&gt;&gt; &gt; at<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; org.xnio.conduits.<wbr>ReadReadyHandler$<wbr>ChannelListenerHandler.<wbr>readReady(ReadReadyHandler.<wbr>java:66)<br>
&gt;&gt; &gt; at org.xnio.nio.NioSocketConduit.<wbr>handleReady(NioSocketConduit.<wbr>java:88)<br>
&gt;&gt; &gt; at org.xnio.nio.WorkerThread.run(<wbr>WorkerThread.java:559)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Mar 21, 2017 at 11:39 PM, Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Wed, Mar 22, 2017 at 12:50 PM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Hi Stuart,<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I debugged into the ALPN code and found some issues with Http2Client.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I started with the Http2Server example and found<br>
&gt;&gt; &gt;&gt; &gt; LoadBalancingProxyClient is<br>
&gt;&gt; &gt;&gt; &gt; using an instance of UndertowClient which can only load HTTP1.1<br>
&gt;&gt; &gt;&gt; &gt; ClientProviders. The following is the code to get ClientProvider and<br>
&gt;&gt; &gt;&gt; &gt; only<br>
&gt;&gt; &gt;&gt; &gt; &quot;http&quot; or &quot;https&quot; can be the return from uri.getSchema().<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; ClientProvider provider = clientProviders.get(uri.<wbr>getScheme());<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; If this is true, then the communication between the proxy and Http/2<br>
&gt;&gt; &gt;&gt; &gt; server<br>
&gt;&gt; &gt;&gt; &gt; is Http/1.1<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; You need to pass in the ENABLE_HTTP2 option in the OptionsMap. For<br>
&gt;&gt; &gt;&gt; http URI&#39;s this means that the client will attempt an upgrade on the<br>
&gt;&gt; &gt;&gt; first request, for https URI&#39;s ALPN will be used to try and negotiate<br>
&gt;&gt; &gt;&gt; HTTP/2. This is how browsers behave, and will work even if the target<br>
&gt;&gt; &gt;&gt; does not support HTTP/2.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; One thing I did notice that I fixed upstream was that the Undertow<br>
&gt;&gt; &gt;&gt; builder was not registering a HTTP2UpgradeHandler when HTTP/2 was<br>
&gt;&gt; &gt;&gt; enabled, which has been fixed.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; In addition, I have created a new class UndertowHttp2Client and<br>
&gt;&gt; &gt;&gt; &gt; Http2ClientTestCase in my forked repo to try<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; the Http2ClientProviders and found all three http2 client providers<br>
&gt;&gt; &gt;&gt; &gt; don&#39;t<br>
&gt;&gt; &gt;&gt; &gt; work as expected.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; h2c and h2-prior got 200 response code back during handshake and h2<br>
&gt;&gt; &gt;&gt; &gt; works<br>
&gt;&gt; &gt;&gt; &gt; but the connection is still http 1.1<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I think this was probably caused by the lack of the upgrade handler<br>
&gt;&gt; &gt;&gt; (well for h2c, h2c-prior should still work).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Stuart<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I am debugging the ALPN code now but it is very slow as I have to dig<br>
&gt;&gt; &gt;&gt; &gt; into<br>
&gt;&gt; &gt;&gt; &gt; the spec to learn how the handshake works.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; As you have resolved the ALPN boot jar issue with the hack, I think<br>
&gt;&gt; &gt;&gt; &gt; Undertow<br>
&gt;&gt; &gt;&gt; &gt; is very usable for HTTP/2 and it would<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; be perfect if the client is working as well. Could you please confirm<br>
&gt;&gt; &gt;&gt; &gt; my<br>
&gt;&gt; &gt;&gt; &gt; findings and let me know direction I should<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; focus on?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Steve<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Here is my repo with UndertowHttp2Client and Test.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; <a href="https://github.com/stevehu/undertow" rel="noreferrer" target="_blank">https://github.com/stevehu/<wbr>undertow</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; And here is the files I have added.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; <a href="https://github.com/stevehu/undertow/blob/master/core/src/main/java/io/undertow/client/UndertowHttp2Client.java" rel="noreferrer" target="_blank">https://github.com/stevehu/<wbr>undertow/blob/master/core/src/<wbr>main/java/io/undertow/client/<wbr>UndertowHttp2Client.java</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; <a href="https://github.com/stevehu/undertow/blob/master/core/src/test/java/io/undertow/client/http/Http2ClientTestCase.java" rel="noreferrer" target="_blank">https://github.com/stevehu/<wbr>undertow/blob/master/core/src/<wbr>test/java/io/undertow/client/<wbr>http/Http2ClientTestCase.java</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; On Sun, Mar 19, 2017 at 8:23 PM, Stuart Douglas &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; I don&#39;t really have time to do it (there is no real benefit for<br>
&gt;&gt; &gt;&gt; &gt;&gt; Undertow, so it is not high on my priority list), but the code is<br>
&gt;&gt; &gt;&gt; &gt;&gt; all<br>
&gt;&gt; &gt;&gt; &gt;&gt; Apache licensed so there is no reason why you can&#39;t start a project<br>
&gt;&gt; &gt;&gt; &gt;&gt; that provides this code as a standalone implementation.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; You would still need to implement code in Netty etc to actually use<br>
&gt;&gt; &gt;&gt; &gt;&gt; this as well, as there is no standardized ALPN API yet.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Stuart<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Mon, Mar 20, 2017 at 11:07 AM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; I am reading the code in client package and they look really good.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; As<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; currently none of the http/2 client library has a work around on<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; alpn<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; boot<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; jar and this blocks majority of developers to move to http/2. I am<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; wondering<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; if you want to split client package to a standalone client module<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; so<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; that it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; can be used by other developers to connect to servers that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; implement<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; http/2.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; If you are interested in it, I can help to create a pull request<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; add<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; some test cases while I am working on my own client<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; implementation.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Thanks.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; On Sun, Mar 19, 2017 at 5:32 PM, Stuart Douglas<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; You could use Undertow&#39;s HTTP/2 client, although it&#39;s API was<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; designed<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; around the reverse proxy use case and as a result is not ideal<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; general purpose HTTP client use case (although it is still<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; perfectly<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; usable).<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; In terms of using Undertow&#39;s ALPN implementation with Netty etc<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; it<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; would require someone to port it over. The code is at [1] if you<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; interested.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Stuart<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; [1]<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; <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>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; On Mon, Mar 20, 2017 at 7:21 AM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Thanks Stuart for the quick response. Now I have server started<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; HTTP/2<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; and it works perfect with some client tools. Now I am looking<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Java<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; HTTP/2 client libraries to update my client module to support<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; HTTP/2<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; protocol for microservices communication. There are three major<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; libraries<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; okhttp, jetty and netty but all of them require Jetty&#39;s ALPN<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; boot<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; JAR. I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; saw<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; you have resolved the boot jar dependency in Undertow and am<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; wondering<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; if<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; you could point me to the right direction. Do you have any<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; recommendation<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; for HTTP/2 client library? How do you work around the alpn boot<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; jar?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; same solution can be used by okhttp, jetty and netty before<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Java 9<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; released?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; On Fri, Mar 17, 2017 at 11:03 PM, Stuart Douglas<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:sdouglas@redhat.com">sdouglas@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; No, that is a debug level message. The JDK8 ALPN provider<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; should<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; still<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; be registered.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Stuart<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; On Sat, Mar 18, 2017 at 12:18 PM, Steve Hu &lt;<a href="mailto:stevehu@gmail.com">stevehu@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; I searched this mailing list and one post mentioned that I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; don&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; need<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; use<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; -Xbootclasspath/p:&lt;path_to_<wbr>alpn_boot_jar&gt; after 1.4.0Final.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; am<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; trying<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; HTTP/2 on my server with 1.4.10 and Oracle JDK 1.8 but when<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; start<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; server I got the following error. Do I have to use OpenJDK<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; 8?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; If I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; switch to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; JBoss OpenSSL implementation?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Steve<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; 21:00:36.468 [main]  DEBUG io.undertow - Configuring<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; listener<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; protocol<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; HTTPS for interface 0.0.0.0 and port 8843<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; 21:00:36.486 [main]  DEBUG io.undertow - JDK9 ALPN not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; supported<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; java.lang.<wbr>NoSuchMethodException:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; javax.net.ssl.SSLParameters.<wbr>setApplicationProtocols([<wbr>Ljava.lang.String;)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at java.lang.Class.getMethod(<wbr>Class.java:1786)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider$1.run(<wbr>JDK9AlpnProvider.java:47)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider$1.run(<wbr>JDK9AlpnProvider.java:43)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at java.security.<wbr>AccessController.doPrivileged(<wbr>Native<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Method)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.protocols.alpn.<wbr>JDK9AlpnProvider.&lt;clinit&gt;(<wbr>JDK9AlpnProvider.java:43)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; sun.reflect.<wbr>NativeConstructorAccessorImpl.<wbr>newInstance0(Native<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Method)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; sun.reflect.<wbr>NativeConstructorAccessorImpl.<wbr>newInstance(<wbr>NativeConstructorAccessorImpl.<wbr>java:62)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; sun.reflect.<wbr>DelegatingConstructorAccessorI<wbr>mpl.newInstance(<wbr>DelegatingConstructorAccessorI<wbr>mpl.java:45)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; java.lang.reflect.Constructor.<wbr>newInstance(Constructor.java:<wbr>423)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at java.lang.Class.newInstance(<wbr>Class.java:442)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; java.util.ServiceLoader$<wbr>LazyIterator.nextService(<wbr>ServiceLoader.java:380)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; java.util.ServiceLoader$<wbr>LazyIterator.next(<wbr>ServiceLoader.java:404)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at java.util.ServiceLoader$1.<wbr>next(ServiceLoader.java:480)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.protocols.alpn.<wbr>ALPNManager.&lt;init&gt;(<wbr>ALPNManager.java:40)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.protocols.alpn.<wbr>ALPNManager.&lt;clinit&gt;(<wbr>ALPNManager.java:35)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.server.protocol.<wbr>http.AlpnOpenListener.&lt;init&gt;(<wbr>AlpnOpenListener.java:67)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; io.undertow.server.protocol.<wbr>http.AlpnOpenListener.&lt;init&gt;(<wbr>AlpnOpenListener.java:90)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at io.undertow.Undertow.start(<wbr>Undertow.java:179)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at com.networknt.server.Server.<wbr>start(Server.java:170)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; at com.networknt.server.Server.<wbr>main(Server.java:90)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; 21:00:36.503 [main]  INFO  com.networknt.server.Server -<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Https<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Server<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; started on ip:0.0.0.0 Port:8843<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; undertow-dev mailing list<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="mailto:undertow-dev@lists.jboss.org">undertow-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; <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>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>