在以下问题的上下文中,我想了解运行 play start 和 play run 之间的区别。
我的具体用例相当复杂,但我会像这样简化它:
现在,当我这样做时
play start
在这个应用程序上,Tomcat 启动并运行,X 很高兴,生活还在继续。但是,当我这样做时
play run
,Tomcat 初始化失败,X 坐在那里等待响应,最终超时。我需要使用
play run
的主要原因用于开发,因为我想通过运行 play debug run
附加 Eclipse 调试器来 Play .我意识到这是一种过度简化,但我希望从您那里得到的是导致 Play run 和 Play start 之间的差异,这可能会对我的应用程序的行为产生影响,从而导致此失败。
现在,我尝试在 http://www.playframework.com/documentation/2.1.x/ThreadPools 之后增加 Play 的默认线程池中的线程数。但没有运气。
Play 输出和日志没有给我关于这个问题的有用信息。
我正在使用 Play 2.1.1
最佳答案
play run
在 中启动 Play 应用程序开发模式 .这意味着它在 Play 提示中运行(在 SBT 中,真的),使用一些自定义类加载器魔法来允许自动重新加载类、自动编译模板等。这种运行应用程序的自定义方式可能是阻止 Tomcat 的原因开始。
如果没有来自 Tomcat 的一些日志输出或堆栈跟踪,很难说更多关于 Tomcat 不启动的原因。这有点类似于在另一个容器中启动 Tomcat,后者通过自定义类加载器(如... Tomcat)提供隔离。
编辑 : 我自己不知道血腥细节,但这一切都发生在 the play run command和 reloader .好像是more documented在 master 中,虽然我不知道 2.1.x 和 2.2.x 之间是否发生了变化。
play start
是在 中运行应用程序的交互式方式生产方式 .这意味着它与调用
java -cp [...] YourMainClass
完全相同。 ,除了它从 Play 提示交互运行(需要 Ctrl+D
分离)而不是在后台运行(因此它不适合自动部署)。 但是,对于实际生产,您应该使用
play dist
准备一个独立版本。命令,然后使用包含的脚本启动它,如 in the documentation 所述.
关于playframework - Play run 和 start 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213427/