Play framework不支持 servlet 规范,但其中有 deployment options可以将整个应用程序打包到一个 war 文件中并将其部署到任何 servlet 容器。
从 verson 1.1 开始,play 使用 netty作为集成网络服务器。
我想知道当 play 应用程序部署在 war 文件中时会发生什么。
在servlet容器内部还是用netty包裹起来吗? 它有任何明显的性能成本吗? 或者它只是访问 servlet 容器?
最佳答案
正如 Niels 所说,Play 不使用 Netty 部署到其他平台。
如果您使用 play run
或 play start
命令运行 Play,它会使用 Netty 来管理请求,然后将它们传递给 Play 框架。
但是,如果您想部署到另一个应用程序服务器,这是不可能的。因此,Play 将 HTTP 处理包装在一个 ServletWrapper 周围,这有效地转换了 Play 的正常工作方式,并使其在符合 Servlet 规范的 J2EE 堆栈上可用。
这个wrapper的具体代码可以是found here .当您构建 WAR 文件时,Play 有效地将此 ServletWrapper 放置为公开的 Servlet(很像 Struts 对 ActionServlet 所做的),并且它处理必要的工作以将请求路由到正确的位置。
关于tomcat - 谁能解释一下什么时候出戏!应用程序部署为 war 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6967444/