Thank you Jacques and Taher for your review and useful comments: I have
committed this work with rev. 1854532.

Taher, I have reviewed the configuration options but I don't feel like
changing any of them by default; for now I have added a comment to the
commit about them and I will leave the implementation of the ability to set
them to a future enhancement.
As a side note, this is a good example for a valid reason to provide the
ability to run OFBiz in an external (rather than embedded) Tomcat instance
(for which all the configuration options would be available outside of
OFBiz): this would require to refactor various aspects of our framework, so
I will postpone this discussion to another day :-)

Regards,

Jacopo


On Mon, Feb 25, 2019 at 10:48 AM Jacques Le Roux <
jacques.le.r...@les7arts.com> wrote:

> I had a look, I don't think we need to worry about those vars.
>
> If/When needed we can change defaults.
>
> Jacques
>
> Le 19/02/2019 à 19:05, Jacques Le Roux a écrit :
> > Good question, I guess most are OK, but what are Trailer Headers for
> instance?
> >
> > BTW https://tomcat.apache.org/tomcat-9.0-doc/config/http2.html is our
> reference for the trunk
> >
> > Jacques
> >
> > Le 19/02/2019 à 10:24, Taher Alkhateeb a écrit :
> >> clean and simple implementation, +1
> >>
> >> on a side note, I wonder if we need to set any of the http2 attributes
> >> listed in [1] or whether the defaults are okay.
> >>
> >> [1] https://tomcat.apache.org/tomcat-8.5-doc/config/http2.html
> >>
> >> On Mon, Feb 18, 2019 at 5:58 PM Jacques Le Roux
> >> <jacques.le.r...@les7arts.com> wrote:
> >>> Hi Jacopo,
> >>>
> >>> Sounds good to me, we can always easily revert in case of unexpected
> issue anyway
> >>>
> >>> Thanks
> >>>
> >>> Jacques
> >>>
> >>> Le 18/02/2019 à 11:43, Jacopo Cappellato a écrit :
> >>>> Hi all,
> >>>>
> >>>> I think it is time to enable the instance of Tomcat that is embedded
> in
> >>>> OFBiz to communicate using the HTTP/2 protocol, when the client
> supports it.
> >>>> For your review, before I commit, I am pasting here the patch that
> will
> >>>> enable it (it is quite simple) .
> >>>> In it I have enabled HTTP/2 by default, by setting
> upgradeProtocol=true, in
> >>>> the http and https connectors (but they will continue to support also
> >>>> HTTP/1.1); if the new property "upgradeProtocol", that I have
> introduced
> >>>> 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. Does
> the
> >>>> approach look good to you?
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Jacopo
> >>>>
> >>>> PS: you can test it, for example, using curl:
> >>>>
> >>>> curl -vso /dev/null --http2 http://localhost:8080
> >>>>
> >>>>
> >>>> Index: framework/catalina/ofbiz-component.xml
> >>>> ===================================================================
> >>>> --- framework/catalina/ofbiz-component.xml (revision 1853787)
> >>>> +++ framework/catalina/ofbiz-component.xml (working copy)
> >>>> @@ -99,6 +99,7 @@
> >>>>                <!--<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 @@
> >>>>                <!--<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 @@
> >>>>                <!--<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 @@
> >>>>                <!--<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"/>
> >>>> Index:
> >>>>
> framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
> >>>> ===================================================================
> >>>> ---
> >>>>
> framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
> >>>> (revision
> >>>> 1853787)
> >>>> +++
> >>>>
> framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
> >>>> (working
> >>>> copy)
> >>>> @@ -63,6 +63,7 @@
> >>>>    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 @@
> >>>>        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) {
> >>>>
> >
>

Reply via email to