使用 Spring 引导自定义 Jetty 的 HttpConfiguration

Customizing HttpConfiguration of Jetty with Spring Boot

我正在使用 spring 引导(截至目前为 1.2.1),我需要增加默认的 8k 请求 header 大小限制,该限制位于 HttpConfiguration class 在码头。查看 JettyEmbeddedServletContainerFactory,我可以通过 EmbeddedServletContainerCustomizer 获得它,但看不到如何更改它。

我确实也查看了 JettyServerCustomizer - 我知道我可以通过它获得码头 Server 但同样 - 无法更改 HttpConfiguration这里。

任何提示将不胜感激。

您可以使用 JettyServerCustomizer 重新配置 HttpConfiguration,但它在 Jetty 的配置模型中隐藏了一点:

@Bean
public EmbeddedServletContainerCustomizer customizer() {
    return new EmbeddedServletContainerCustomizer() {

        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            if (container instanceof JettyEmbeddedServletContainerFactory) {
                customizeJetty((JettyEmbeddedServletContainerFactory) container);
            }
        }

        private void customizeJetty(JettyEmbeddedServletContainerFactory jetty) {
            jetty.addServerCustomizers(new JettyServerCustomizer() {

                @Override
                public void customize(Server server) {
                    for (Connector connector : server.getConnectors()) {
                        if (connector instanceof ServerConnector) {
                            HttpConnectionFactory connectionFactory = ((ServerConnector) connector)
                                    .getConnectionFactory(HttpConnectionFactory.class);
                            connectionFactory.getHttpConfiguration()
                                    .setRequestHeaderSize(16 * 1024);
                        }
                    }
                }
            });
        }
    };

}