Hi, I setup a jetty-alpn.xml, and set the default protocol for ALPNServerConnectionFactory. Now, it works.
Thanks! 2016-03-31 17:01 GMT+08:00 Simone Bordet <[email protected]>: > Hi, > > On Thu, Mar 31, 2016 at 10:44 AM, John Jiang <[email protected]> > wrote: > > Hi, > > Sorry for the late reply. > > > > Please allow me to describe more clearly. > > > > 1. When my Jetty 9.3.5 server started, the below logs were shown, > > 2016-03-31 15:55:07.476:INFO:oejs.ServerConnector:main: Started > > ServerConnector@10d59286{HTTP/1.1,[http/1.1, h2c, h2c-17, h2c-16, > h2c-15, > > h2c-14]}{0.0.0.0:8080} > > This connector speaks HTTP/1.1 and will be able to speak HTTP/2 > clear-text (h2c) when an upgrade is performed. > > > 2016-03-31 15:55:08.699:INFO:oejus.SslContextFactory:main: > > x509=X509@5123a213(1,h=[sc11136070.us.oracle.com],w=[]) for > > SslContextFactory@52525845(...) > > 2016-03-31 15:55:12.725:INFO:oejs.ServerConnector:main: Started > > ServerConnector@4be242d9{SSL,[ssl, alpn, h2, h2-17, h2-16, h2-15, h2-14, > > http/1.1]}{0.0.0.0:8081} > > This connector speaks SSL, it is configured with ALPN, so will be able > to speak HTTP/2 and HTTP/1.1 based on the ALPN protocol negotiated. > > > 2016-03-31 15:55:12.726:INFO:oejs.Server:main: Started @23362ms > > > > I think it means that the server supports HTTP/2 with/without TLS. Right? > > Correct. > > > 2. I used the following test codes, > > public void testHttp() throws Exception, InterruptedException, > > ExecutionException, TimeoutException { > > String url = "https://localhost:8081"; > > HttpClient client = new HttpClient(sslContextFactory); // This SSL > setup > > has no problem. > > You are using the HTTP/1.1 transport here, so no HTTP/2 from the client. > > > client.start(); > > HttpRequest request = (HttpRequest) client.newRequest(url); > > System.out.println(request); > > ContentResponse response = request.send(); > > System.out.println(response.getStatus()); > > client.stop(); > > } > > > > And I got the below output: > > 2016-03-31 16:31:55.450:INFO::main: Logging initialized @522ms > > HttpRequest[GET HTTP/1.1]@64bfbc86 > > 2016-03-31 16:31:57.556:WARN:oejh.HttpParser:HttpClient@32374789-14: > Illegal > > character 0x0 in state=START for buffer > > DirectByteBuffer@5684296a > [p=1,l=32,c=16384,r=31]={\x00<<<\x00\x17\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01invalid_preface>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} > > So, the client sent a HTTP/1.1 request, and the server replied with a > HTTP/2 GOAWAY frame saying "invalid_preface". > > You are not using ALPN on the client, so this tells me that you have > chosen HTTP/2 to be the default protocol on the server. > > What you want to do is to tell the ALPN ConnectionFactory what is the > default protocol. In your case it should be "http/1.1". > See ALPNServerConnectionFactory.setDefaultProtocol(String). > > -- > Simone Bordet > ---- > http://cometd.org > http://webtide.com > Developer advice, training, services and support > from the Jetty & CometD experts. > _______________________________________________ > jetty-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/jetty-users >
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
