Thanks Remy, On Wed, Apr 8, 2020 at 8:48 AM Rémy Maucherat <r...@apache.org> wrote:
> >> > If we want to improve on the Connector situation regarding duplication and > reflection abuse, the only solution is to expose the different objects > involved. > > Since an example is usually better, I'll give one using server.xml. > > A typical Connector with TLS is at the moment: > <Connector port="8443" > protocol="org.apache.coyote.http11.Http11NioProtocol" > SSLEnabled="true" scheme="https" secure="true" > socket.directBuffer="true" socket.directSslBuffer="true" > maxHeaderCount="10" > > > sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"> > <SSLHostConfig honorCipherOrder="false"> > <Certificate certificateKeyFile="${catalina.home}/conf/key.pem" > certificateFile="${catalina.home}/conf/cert.pem" > type="RSA" /> > </SSLHostConfig> > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" > /> > </Connector> > > And it would become: > <Connector scheme="https" secure="true"> > <Endpoint className="org.apache.tomcat.util.net.NioEndpoint" > port="8443" SSLEnabled="true" > > > sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"> > <SocketProperties directBuffer="true" directSslBuffer="true" /> > <SSLHostConfig honorCipherOrder="false"> > <Certificate certificateKeyFile="${catalina.home}/conf/key.pem" > certificateFile="${catalina.home}/conf/cert.pem" > type="RSA" /> > </SSLHostConfig> > </Endpoint> > <Protocol className="org.apache.coyote.http11.Http11Protocol" > maxHeaderCount="10" /> > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" > /> > </Connector> > This configuration gives the impression that the Endpoint is a child of the Connector. But the Connector truly only needs the ProtocolHandler interface to function. The injected object would then be better to an instance of a ProtocolHandler The XML can of course be configured to instantiate and inject the ProtocolHandler handler directly into the Connector In this setting, it doesn't make sense to have any properties on the Connector, since the Connector receives the protocol handler already configured. <Connector scheme="https" secure="true"> <Protocol className="org.apache.coyote.http11.Http11Protocol" maxHeaderCount="10" > <Endpoint className="org.apache.tomcat.util.net.NioEndpoint" port="8443" SSLEnabled="true" sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"> <SocketProperties directBuffer="true" directSslBuffer="true" /> <SSLHostConfig honorCipherOrder="false"> <Certificate certificateKeyFile="${catalina.home}/conf/key.pem" certificateFile="${catalina.home}/conf/cert.pem" type="RSA" /> </SSLHostConfig> </Endpoint> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <Protocol </Connector> Filip > t > Each individual object is now created by the digester using normal bean > rules, and I suppose it will become wired up by the Connector during init. > Embedded can then do the same as the digester instead of having to go > through the Connector object. > > Rémy > > >> >> Mark >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: dev-h...@tomcat.apache.org >> >>