Play 2.0 - 在服务器重启后作为Windows服务启动

时间:2013-02-26 12:07:24

标签: windows-services playframework-2.0

我有玩!应用程序作为Windows服务运行。它是根据this指南实施的。

问题是,当重新启动服务器并且应用程序无法再次启动时,不会删除应用程序根文件夹中的RUNNING_PID。我必须删除此文件并再次手动启动该服务。

有没有解决方案?

3 个答案:

答案 0 :(得分:7)

YAJSW

如果YAJSW我发现this answer有更好的理解。它当然与你给出的链接非常相​​似,但请记住,更经常建议使用dist命令而不是stage,因为它有更好的开发人员注意力({{1}中修复了更多错误})。米哈伊尔的答案更清楚了(投票给他!)

RUNNING_PID

dist的情况下,有一些拉动请求建议添加一个禁用pidfile的选项...无论如何,正如我所看到的,它们都没有被接受......

实际上,如果您无法避免创建它,您可以...在应用程序启动后立即将其删除,最好使用Globals object's RUNNING_PID方法。要了解工作实例的当前PID是什么,只需将文件重命名为某些内容,在启动时不会被Play检查 - 例如onStart()。在这种情况下,服务器的重启服务将运行您的应用程序没有问题。

RUNNING_PID_INFO

(注意:在apllication.conf中更改import play.GlobalSettings; import java.io.File; public class Global extends GlobalSettings { @Override public void onStart(Application application) { File pidFile = new File("RUNNING_PID"); pidFile.renameTo(new File("RUNNING_PID_INFO")); } @Override public void onStop(Application application) { File pidFile = new File("RUNNING_PID_INFO"); pidFile.delete(); } } 将无法解决问题,因为播放将使用它来检查实例是否正常工作)

答案 1 :(得分:6)

从Play Framework 2.1开始,您可以通过设置pidfile.path属性来禁用PID文件:

视窗:

-Dpidfile.path=NUL

Unix的:

-Dpidfile.path=/dev/null

找到https://groups.google.com/forum/#!topic/play-framework/4amD9o37Ki4

答案 2 :(得分:1)

我最近使用YAJSW按照this answer安装了一个播放框架应用程序。我注意到,现在,RUNNING_PID会自动删除,您不必担心修改代码以删除文件。此外,如果您的服务依赖于其他服务,最好将DELAYED_AUTO_START设置为启动模式,以确保在服务器重新启动后正确启动服务。