使用 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);
}
}
}
});
}
};
}
我正在使用 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);
}
}
}
});
}
};
}