Author: jacopoc
Date: Thu Feb 28 15:12:20 2019 New Revision: 1854532 URL: http://svn.apache.org/viewvc?rev=1854532&view=rev Log: Implemented: Added ability to configure the embedded Tomcat instance to communicate using the HTTP/2 protocol, when the client supports it. With this commit HTTP/2 is enabled by default, by setting upgradeProtocol=true in the http and https connectors of Tomcat; however the connectors will continue to support HTTP/1.1 (the switch to HTTP/2 is negotiated with the client using the "HTTP Upgrade Protocol"); if the new "upgradeProtocol" property, introduced in this commit for this specific purpose, is not set (as it would be the case in custom configuration files) then the new protocol will not be enabled. Additional Tomcat specific configuration options are available (see https://tomcat.apache.org/tomcat-9.0-doc/config/http2.html) but this commit doesn't implement the ability to set them (this is left to a future enhancement, if there will be a requirement to change the default values). Modified: ofbiz/ofbiz-framework/trunk/framework/catalina/ofbiz-component.xml ofbiz/ofbiz-framework/trunk/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java Modified: ofbiz/ofbiz-framework/trunk/framework/catalina/ofbiz-component.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/catalina/ofbiz-component.xml?rev=1854532&r1=1854531&r2=1854532&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/catalina/ofbiz-component.xml (original) +++ ofbiz/ofbiz-framework/trunk/framework/catalina/ofbiz-component.xml Thu Feb 28 15:12:20 2019 @@ -99,6 +99,7 @@ under the License. <!--<property name="address" value=""/>--> <property name="port" value="8080"/> <property name="protocol" value="HTTP/1.1"/> + <property name="upgradeProtocol" value="true"/> <property name="scheme" value="http"/> <property name="secure" value="false"/> <property name="URIEncoding" value="UTF-8"/> @@ -128,6 +129,7 @@ under the License. <!--<property name="address" value=""/>--> <property name="port" value="8443"/> <property name="protocol" value="HTTP/1.1"/> + <property name="upgradeProtocol" value="true"/> <property name="scheme" value="https"/> <property name="secure" value="true"/> <property name="SSLEnabled" value="true"/> @@ -183,6 +185,7 @@ under the License. <!--<property name="address" value=""/>--> <property name="port" value="8080"/> <property name="protocol" value="HTTP/1.1"/> + <property name="upgradeProtocol" value="true"/> <property name="scheme" value="http"/> <property name="secure" value="false"/> <property name="URIEncoding" value="UTF-8"/> @@ -194,6 +197,7 @@ under the License. <!--<property name="address" value=""/>--> <property name="port" value="8443"/> <property name="protocol" value="HTTP/1.1"/> + <property name="upgradeProtocol" value="true"/> <property name="scheme" value="https"/> <property name="secure" value="true"/> <property name="SSLEnabled" value="true"/> Modified: ofbiz/ofbiz-framework/trunk/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java?rev=1854532&r1=1854531&r2=1854532&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java Thu Feb 28 15:12:20 2019 @@ -63,6 +63,7 @@ import org.apache.catalina.tribes.transp import org.apache.catalina.util.ServerInfo; import org.apache.catalina.valves.AccessLogValve; import org.apache.catalina.webresources.StandardRoot; +import org.apache.coyote.http2.Http2Protocol; import org.apache.ofbiz.base.component.ComponentConfig; import org.apache.ofbiz.base.concurrent.ExecutionPool; import org.apache.ofbiz.base.container.Container; @@ -417,9 +418,12 @@ public class CatalinaContainer implement private Connector prepareConnector(Property connectorProp) { Connector connector = new Connector(ContainerConfig.getPropertyValue(connectorProp, "protocol", "HTTP/1.1")); connector.setPort(ContainerConfig.getPropertyValue(connectorProp, "port", 0) + Start.getInstance().getConfig().portOffset); - + if ("true".equals(ContainerConfig.getPropertyValue(connectorProp, "upgradeProtocol", "false"))) { + connector.addUpgradeProtocol(new Http2Protocol()); + Debug.logInfo("Tomcat " + connector + ": enabled HTTP/2", module); + } connectorProp.properties.values().stream() - .filter(prop -> !"protocol".equals(prop.name) && !"port".equals(prop.name)) + .filter(prop -> !"protocol".equals(prop.name) && !"upgradeProtocol".equals(prop.name) && !"port".equals(prop.name)) .forEach(prop -> { if (IntrospectionUtils.setProperty(connector, prop.name, prop.value)) { if (prop.name.indexOf("Pass") != -1) { |
Free forum by Nabble | Edit this page |