如何解决Undertow配置TCP保持活动参数
我将Undertow用作Java应用程序的服务器,我试图使用以下命令设置TCP Keep Alive选项 Undertow.Builder的setSocketoptions()方法(请参见下面的代码)。
为了进行测试,我正在发送1条消息,然后保持连接处于活动状态而不在其上发送任何内容,以便可以观察到TCP-KeepAlive。 但是由于设置的参数,由于无法在tcpdump捕获中看到任何保持活动的数据包,因此无法设置这些字段。
Undertow是否支持设置这些参数? 如果是,这是在Undertow中配置TCP Keep Alive参数的正确方法还是我遗漏了什么?
@Bean
public ServletWebServerFactory undertowFactory() {
UndertowServletWebServerFactory undertowFactory = new UndertowServletWebServerFactory();
// listen to http and enable http2
undertowFactory.addBuilderCustomizers((Undertow.Builder builder) -> {
builder.setWorkerThreads(maxWorkerThreads);
builder.addHttpListener(httpPort,"0.0.0.0");
builder.setServerOption(UndertowOptions.ENABLE_HTTP2,isHTTP2Enabled);
builder.setServerOption(UndertowOptions.IDLE_TIMEOUT,3600000);
builder.setSocketoption(Options.KEEP_ALIVE,true);
builder.setSocketoption(Option.simple(StandardSocketoptions.class,"SO_KEEPALIVE",Boolean.class),true);
builder.setSocketoption(Option.simple(ExtendedSocketoptions.class,"TCP_KEEPINTERVAL",Integer.class),10);
builder.setSocketoption(Option.simple(ExtendedSocketoptions.class,"TCP_KEEPIDLE","TCP_KEEPCNT",10);
});
logger.info("Undertow Max Worker Threads: " + maxWorkerThreads);
undertowFactory.addDeploymentInfoCustomizers(deploymentInfo -> {
deploymentInfo.addInitialHandlerChainWrapper(gracefulShutdown());
});
// redirect http to https
if (redirectHTTP == true) {
undertowFactory.addDeploymentInfoCustomizers(deploymentInfo -> {
deploymentInfo.addSecurityConstraint(new SecurityConstraint()
.addWebResourceCollection(new WebResourceCollection().addUrlPattern("/*"))
.setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL)
.setEmptyRoleSemantic(SecurityInfo.EmptyRoleSemantic.PERMIT))
.setConfidentialPortManager(exchange -> httpsPort);
});
}
return undertowFactory;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。