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: