带有嵌入式Tomcat的APR- Spring

x33g5p2x  于 2022-11-13  发布在  Spring
关注(0)|答案(1)|浏览(175)

我正在使用spring框架创建RESTApi。我的IDE是STS。Embedded Tomcat概念非常有用,也很容易实现。只需导出一个jar,运行它,您的服务就会启动并运行,但Embedded Tomcat使用的是Nio HTTP连接器。我做了一些研究,发现APR HTTP连接器比Nio好得多,我想使用APR。还有一个选项:导出一个war文件,把它部署到一个tomcat中并配置它的HTTP连接器。2但是我真的很喜欢嵌入式tomcat,我想知道是否可以把它的HTTP连接器从Nio改为APR?

wbrvyc0a

wbrvyc0a1#

我们可以在嵌入了springboot的tomcat中启用APR,方法是覆盖org.springframework.boot.web.embedded. tomcat.tomcatServletWebServerFactory,并提供新的 Catalina .connector.连接器和org.apache.coyote.http11.Http11AprProtocol协议。
下面的代码可能有助于完成它。

@Bean
public TomcatServletWebServerFactory servletContainerFactoryProd() {
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
        @Override
        protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
            // to create new directories and files and add them to Context
            return super.getTomcatWebServer(tomcat);
        }
    };
    
    Connector connector = new Connector("org.apache.coyote.http11.Http11AprProtocol");
    Http11AprProtocol protocol = (Http11AprProtocol) connector.getProtocolHandler();
    connector.setProperty("compression", "on");
    connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml");
    // can also enable ssl and provide certificate details
    tomcat.addAdditionalTomcatConnectors(connector);
    return tomcat;
}

相关问题