spring - 在单个应用程序上下文中使用 Netty 的 Tomcat
问题描述
我有一个使用 tomcat 的 spring 应用程序,我想将 netty 作为并行 web 服务器运行并在两者之间共享应用程序上下文,我将 web 通量启动器与 web 连接在一起,但只有 tomcat 在属性中指定的端口上启动.`@Configuration 类 NettyConfiguration {
@Bean
fun nettyReactiveWebServerFactory(): NettyReactiveWebServerFactory {
val webServerFactory = NettyReactiveWebServerFactory()
webServerFactory.addServerCustomizers(EventLoopNettyCustomizer())
return webServerFactory
}
private class EventLoopNettyCustomizer : NettyServerCustomizer {
override fun apply(httpServer: HttpServer): HttpServer {
val parentGroup: EventLoopGroup = NioEventLoopGroup()
val childGroup: EventLoopGroup = NioEventLoopGroup()
return httpServer.port(8084)
.tcpConfiguration { tcpServer ->
tcpServer
.bootstrap { serverBootstrap ->
serverBootstrap
.group(parentGroup, childGroup)
.channel(NioServerSocketChannel::class.java)
}
}
}
}
}`
解决方案
试试这个:
@Configuration
public class CustomWebServerConfig {
private final HttpHandler httpHandler;
public CustomWebServerConfig(HttpHandler httpHandler) {
this.httpHandler = httpHandler;
}
@PostConstruct
public void customPortNettyWebServer() {
var factory = new NettyReactiveWebServerFactory(8082);
var webServer = factory.getWebServer(httpHandler);
webServer.start();
}
}
推荐阅读
- swift - 在 UIScrollView 中滚动时如何裁剪 UIImage
- powershell - Jenkins 的 PowerShell 插件中没有输出
- c++ - 使用外部函数而不是包含定义该函数的标头
- excel - 在用户窗体初始化中突然出现不同的错误
- python - 如何在python中将字符串转换为null或Nan?
- c# - 注销时 ASP NET CORE 身份重定向到拒绝访问
- javascript - SVG 图像不显示
- node.js - 如何在返回外部函数之前等待内部函数完成?
- android - 如何从 Android 中的 XML 文件向 Google 地图添加标记
- java - Gson().tojson() 返回 {} 大括号