Search in sources :

Example 1 with Http11Nio2Protocol

use of org.apache.coyote.http11.Http11Nio2Protocol in project cas by apereo.

the class CasTomcatServletWebServerFactoryCustomizer method configureConnectorForProtocol.

private static void configureConnectorForProtocol(final Connector connector, final CasEmbeddedApacheTomcatHttpProxyProperties proxy) {
    val handler = ReflectionUtils.findField(connector.getClass(), "protocolHandler");
    if (handler != null) {
        ReflectionUtils.makeAccessible(handler);
        if ("HTTP/2".equalsIgnoreCase(proxy.getProtocol())) {
            connector.addUpgradeProtocol(new Http2Protocol());
        } else {
            var protocolHandlerInstance = (AbstractProtocol) null;
            switch(proxy.getProtocol()) {
                case "AJP/2":
                    protocolHandlerInstance = new AjpNio2Protocol();
                    val ajp1 = AbstractAjpProtocol.class.cast(protocolHandlerInstance);
                    ajp1.setSecretRequired(proxy.isSecure());
                    ajp1.setSecret(proxy.getSecret());
                    break;
                case "AJP/1.3":
                    protocolHandlerInstance = new AjpNioProtocol();
                    val ajp2 = AbstractAjpProtocol.class.cast(protocolHandlerInstance);
                    ajp2.setSecretRequired(proxy.isSecure());
                    ajp2.setSecret(proxy.getSecret());
                    break;
                case "APR":
                    protocolHandlerInstance = new Http11AprProtocol();
                    break;
                case "HTTP/1.2":
                    protocolHandlerInstance = new Http11Nio2Protocol();
                    break;
                case "HTTP/1.1":
                default:
                    protocolHandlerInstance = new Http11NioProtocol();
                    break;
            }
            protocolHandlerInstance.setPort(connector.getPort());
            ReflectionUtils.setField(handler, connector, protocolHandlerInstance);
        }
        val handlerClass = ReflectionUtils.findField(connector.getClass(), "protocolHandlerClassName");
        if (handlerClass != null) {
            ReflectionUtils.makeAccessible(handlerClass);
            ReflectionUtils.setField(handlerClass, connector, connector.getProtocolHandler().getClass().getName());
        }
    }
}
Also used : lombok.val(lombok.val) AbstractProtocol(org.apache.coyote.AbstractProtocol) Http11NioProtocol(org.apache.coyote.http11.Http11NioProtocol) Http11Nio2Protocol(org.apache.coyote.http11.Http11Nio2Protocol) Http11AprProtocol(org.apache.coyote.http11.Http11AprProtocol) AjpNio2Protocol(org.apache.coyote.ajp.AjpNio2Protocol) AjpNioProtocol(org.apache.coyote.ajp.AjpNioProtocol) Http2Protocol(org.apache.coyote.http2.Http2Protocol)

Aggregations

lombok.val (lombok.val)1 AbstractProtocol (org.apache.coyote.AbstractProtocol)1 AjpNio2Protocol (org.apache.coyote.ajp.AjpNio2Protocol)1 AjpNioProtocol (org.apache.coyote.ajp.AjpNioProtocol)1 Http11AprProtocol (org.apache.coyote.http11.Http11AprProtocol)1 Http11Nio2Protocol (org.apache.coyote.http11.Http11Nio2Protocol)1 Http11NioProtocol (org.apache.coyote.http11.Http11NioProtocol)1 Http2Protocol (org.apache.coyote.http2.Http2Protocol)1