Mark, Thanks for pointing me out, and I will have a try on h2c using curl.
Huxing ------------------------------------------------------------------ From:Mark Thomas <ma...@apache.org> Time:2015 Nov 17 (Tue) 15:24 To:Tomcat Developers List <dev@tomcat.apache.org> Subject:Re: A step by step guide to try out the HTTP/2 feature in tomcat9 On 17 November 2015 00:49:00 GMT+00:00, Huxing Zhang <huxing....@alibaba-inc.com> wrote: >Chris, > >>> NOTES: >>> * HTTP/2 is not supported for non-secured protocol currently. > >> I'm no expert, but I thought that h2c was supported. > >Actually I tried to configure HTTP/2 in non-secured connector, the >configuration I tried in server.xml is as follows: > ><Connector port="8080" >protocol="org.apache.coyote.http11.Http11AprProtocol" > connectionTimeout="20000" > redirectPort="8443" > > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> > </Connector> > >When tomcat started, I observed the following log: >17-Nov-2015 08:35:20.149 INFO [main] >org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol >The ["http-apr-8080"] connector has been configured to support HTTP >upgrade to [h2c] > >However, when I tried the server push example: >http://localhost:8080/examples/servlets/serverpush/simpleimage > >The following error occurred: > >java.lang.UnsupportedOperationException: Server push requests are not >supported by the HTTP/1.1 protocol > org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:937) > org.apache.coyote.Request.action(Request.java:392) > http2.SimpleImagePush.doGet(SimpleImagePush.java:37) > javax.servlet.http.HttpServlet.service(HttpServlet.java:622) > javax.servlet.http.HttpServlet.service(HttpServlet.java:729) > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) > org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) > >Am I missing something? > >Best Regards, >Huxing >------------------------------------------------------------------ >From:Christopher Schultz <ch...@christopherschultz.net> >Time:2015 Nov 17 (Tue) 06:44 >To:Tomcat Developers List <dev@tomcat.apache.org> >Subject:Re: A step by step guide to try out the HTTP/2 feature in >tomcat9 > > >Huxing, > >On 11/16/15 3:14 AM, Huxing Zhang wrote: >> Following is a step by step guide for those who are interested in >trying out the HTTP/2 feature in tomcat9, >> Please correct me if anything is wrong. >> >> Prerequisite: >> * JDK8: suppose you've already installed >> * tomcat 9.0.0.M1: >> Please download from >https://dist.apache.org/repos/dist/dev/tomcat/tomcat-9/v9.0.0.M1/ >> (a release candidate which is calling for votes.) >> * openssl 1.0.2d: >> For Unix: >> 1) build from source code: >> wget https://www.openssl.org/source/openssl-1.0.2d.tar.gz >> tar -xf openssl-1.0.2d.tar.gz >> cd openssl-1.0.2d >> ./config -fPIC --prefix=/path/to/openssl/ >> make >> (sudo) make install >> >> For Mac OSX >> 1) build from source code: >> wget https://www.openssl.org/source/openssl-1.0.2d.tar.gz >> tar -xf openssl-1.0.2d.tar.gz >> cd openssl-1.0.2d >> ./Configure darwin64-x86_64-cc --prefix=/path/to/openssl shared >> make >> (sudo) make install >> 2) obtain from brew (recommended, but not tried yet) > >+1 for brew, though it wants to install a bunch of things that might >surprise you (I originally used to install gpg, I think). It *does* >allow you to install any number of OpenSSL versions side-by-side, >though. If you use brew to install multiple OpenSSLs, you'll want to >specify which one you are using when building tcnative. You'll want to >point --with-ssl at /usr/local/Cellar/openssl/[version] > >Current version of OpenSSL available through Brew is 1.0.2d. > >> * apr 1.4.0+ (latest version is 1.5.2) >> build apr 1.5.2 from scratch if not installed: >> download source code from https://apr.apache.org/download.cgi >> tar -xf apr-1.5.2.tar.gz >> cd apr-1.5.2 >> ./configure >> make >> (sudo) make install >> * tomcat native 1.2.2 (require apr 1.4.0+) >> For Windows: >> please download the binary release from >http://tomcat.apache.org/download-native.cgi >> or build from source code(not tried yet) >> >> For Unix/Mac OSX >> download the source code from: >http://tomcat.apache.org/download-native.cgi >> tar -xf tomcat-native-1.2.2-src.tar.gz >> cd tomcat-native-1.2.2-src/native >> ./configure --with-apr=/path/to/apr --with-ssl=/path/to/openssl >> make >> (sudo) make install >> >> * Genearte self-signed certificate: >> /path/to/openssl req -x509 -newkey rsa:2048 -keyout >/var/tmp/private-key.pem -out /var/tmp/cert.pem -days 365 >> (with passphrase: tomcat) >> >> Tomcat side configurations(APR connector) >> 1. configure setenv.sh >> CATALINA_OPTS="$CATALINA_OPTS >-Djava.library.path=/path/to/your/tcnative/lib" >> 2. configure server.xml >> <Connector port="8443" >protocol="org.apache.coyote.http11.Http11Nio2Protocol" >> maxThreads="150" SSLEnabled="true"> >> <UpgradeProtocol >className="org.apache.coyote.http2.Http2Protocol" /> >> <SSLHostConfig honorCipherOrder="false" > >> <Certificate >certificateKeyFile="/var/tmp/private-key.pem" >> certificateFile="/var/tmp/cert.pem" >> certificateKeyPassword="tomcat" >> type="RSA" /> >> </SSLHostConfig> >> </Connector> >> 3. start tomcat >> 4. visit >https://localhost:8443/examples/servlets/serverpush/simpleimage >> You should see the image if everything is all right. >> >> Tomcat side configurations(NIO/NIO2 connector, take NIO2 as an >example) >> 1. configure server.xml >> <Connector port="8443" >protocol="org.apache.coyote.http11.Http11Nio2Protocol" >> >sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation" >> maxThreads="150" SSLEnabled="true"> >> <UpgradeProtocol >className="org.apache.coyote.http2.Http2Protocol" /> >> <SSLHostConfig honorCipherOrder="false" > >> <Certificate >certificateKeyFile="/var/tmp/private-key.pem" >> certificateFile="/var/tmp/cert.pem" >> certificateKeyPassword="tomcat" >> type="RSA" /> >> </SSLHostConfig> >> </Connector> >> 2. start tomcat >> 3. visit >https://localhost:8443/examples/servlets/serverpush/simpleimage >> You should see the image if everything is all right. >> >> NOTES: >> * HTTP/2 is not supported for non-secured protocol currently. > >I'm no expert, but I thought that h2c was supported. > >> * HTTP/2 is not supported for JSSE implementation currently. > >-chris > >--------------------------------------------------------------------- >To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >For additional commands, e-mail: dev-h...@tomcat.apache.org > >--------------------------------------------------------------------- >To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >For additional commands, e-mail: dev-h...@tomcat.apache.org Most browsers don't support h2c. Tomcat does. You can test this with a recent build of curl. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org