tracker issue : CF-4207070

select a category, or use search below
(searches all categories and all time range)
Title:

Unable to upgrade connections to HTTP2 (no tomcat-native library)

| View in Tracker

Status/Resolution/Reason: To Fix//BugVerified

Reporter/Name(from Bugbase): Matt P. / ()

Created: 02/13/2020

Components: Web Container (Tomcat)

Versions: 2018,14.0

Failure Type: Performance Issue

Found In Build/Fixed In Build: 2018,0,07,316715 /

Priority/Frequency: Normal / All users will encounter

Locale/System: English / Linux Red Hat All

Vote Count: 2

Problem Description:
Unable to upgrade HTTP connections to HTTP2. Upgrading connections to HTTP2 requires the tomcat-native library.

Could we add the tomcat-native library to the Coldfusion2018 built in tomcat? If so, would the tomcat-native library remain in place after a Coldfusion 2018 update?

Could you recommend a specific source for the tomcat-native library and recommend how we add it to Coldfusion2018 built in tomcat?

Alternatively, Could you recommend another way that we enable HTTP2 for Coldfusion 2018 using built in tomcat?

Below is an example of what was added to server.xml I’ve used a similar configuration successfully with other implementations of tomcat 9. 

<Connector port="8543" protocol="org.apache.coyote.http11.Http11NioProtocol"
   maxThreads="200"
   SSLEnabled="true"
   compression="on"
   compressionMinSize="1024"
   compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,text/html;charset=UTF-8,text/xml;charset=UTF-8,text/plain;charset=UTF-8,text/css;charset=UTF-8,text/javascript;charset=UTF-8,application/javascript;charset=UTF-8"
   noCompressionUserAgents="gozilla, traviata">
  <UpgradeProtocol
   className="org.apache.coyote.http2.Http2Protocol"
   compression="on"
   compressionMinSize="1024"
   compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,text/html;charset=UTF-8,text/xml;charset=UTF-8,text/plain;charset=UTF-8,text/css;charset=UTF-8,text/javascript;charset=UTF-8,application/javascript;charset=UTF-8"
   noCompressionUserAgents="gozilla, traviata" />
  <SSLHostConfig>
  <Certificate
   certificateKeystoreFile="xxx/runtime/keystore "
   certificateKeystorePassword="NotaRealPassword"
   keystoreType="PKCS12"/>
  </SSLHostConfig>
  </Connector>


Steps to Reproduce:
create certificate, modify server.xml as listed in description and reference SSL certificate

Actual Result:
SEVERE: Failed to initialize component [Connector[HTTP/1.1-8543]]
org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:985)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1059)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at com.adobe.coldfusion.launcher.Launcher.run(Launcher.java:949)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.adobe.coldfusion.bootstrap.Bootstrap.init(Bootstrap.java:100)
        at com.adobe.coldfusion.bootstrap.Bootstrap.main(Bootstrap.java:185)
Caused by: java.lang.IllegalArgumentException: No SSLHostConfig element was found with the hostName [_default_] to match the defaultSSLHostConfigName for the connector [https-jsse-nio-8543]
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:76)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218)
        at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1137)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:574)
        at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:982)

Expected Result:
HTTP upgrades to HTTP2 connections when clients access the tomcat instance.
tomcat would start with a message similar to :
INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-nio-8543"] connector has been configured to support negotiation to [h2] via ALPN

Any Workarounds:

Attachments:

Comments:

Would like to see how we enable tomcat native for http2 for ColdFusion standalone server.
Vote by Carl T.
33120 | February 13, 2020 06:24:29 PM GMT