java - 在 Tomcat 中托管 Netty 服务器是否可行/可取?

标签 java deployment tomcat nio netty

我们构建了一个基于 Netty/NIO 的服务,我正在考虑将该服务部署到我们的生产环境中。我们部署服务的标准方式是作为 WAR,部署在 Tomcat 中。

当我在这里提出相同的方法时,我得到了“不应该这样做”的呼喊和提示,因为 Netty 和 Tomcat 都是服务器,并且“将一个服务器托管在另一个服务器上没有意义”。

对我来说这很有意义,因为它完全解决了我的部署问题,并且让我免于编写其他代码。为什么是这么大的“不不”?

最佳答案

Tomcat 提供的动态 WAR 部署和卸载是为 Web 应用程序设计的。您尝试部署到 Tomcat 中的 Netty 应用程序不是 Web 应用程序,而只是一个仅共享 VM 内存的独立服务器。这意味着 Tomcat 已被重新用于通用微内核,例如 OSGi。

不过,我认为这不是什么大问题。由于您的公司使用 WAR 作为标准部署机制,因此重用它可能是个好主意。您甚至不需要编写一些管理功能,例如远程关机,因为 Tomcat 已经提供了它们。您需要做的就是确保在取消部署时释放所有资源。

不过有些人可能不喜欢这种方法。理想情况下,应该有一个通用的基础设施来部署和管理任何应用程序(也称为微内核),其中甚至 Tomcat 被部署为一个模块并且微内核直接管理 WAR 而不是 Tomcat。但这还有很长的路要走。

关于java - 在 Tomcat 中托管 Netty 服务器是否可行/可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194508/

相关文章:

java - Spring 存储库自动转换具有不同类类型的实体

java - 如何检查现有 session 是否无效?

ruby-on-rails - Rails 应用程序 : 'Only one SNI endpoint is allowed per app' 上的 Heroku SSL 出现问题

java - Jersey SSE - 事件 Output.write 在发送第一条消息后抛出空指针

java - 第二次提交 multipart/config 后出现 NullPointerException - Tomcat

Axis2 找不到 Hibernate 配置文件

java - 我可以在 Web 应用程序中使用 log4j 和 log4j.xml 或 log4j.properties 以外的文件吗?

java - 如何将一个特征文件的数据(来自示例)传递到另一特征文件?

java - application.xml 中必需的尾部斜杠

java - WAR Web 应用程序重新部署依赖项