【发布时间】:2016-12-02 14:45:03
【问题描述】:
我希望能够每 3 天从内部停止我的应用程序。我只是想安排一个方法来自动停止应用程序,而无需任何外部干预(比如坐在我的桌面上等)。
到目前为止,我想到了这些:
Runtime.getRuntime().exec("rhc stop-app --app ApplicationName"); //This doesn't work. I have tried it
或者
System.exit(0) // I am told to not run this command on openshift server
或者
Runtime.getRuntime().exit(0) //I am afraid to run this command
或者
Runtime.getRuntime().halt(0) //I am afraid to run this command as well
其中一些命令我不敢使用,因为我被告知不要在 openshift 服务器上运行它们,因为它们实际上可能会停止整个虚拟机。这将停止该虚拟机上托管的所有应用程序。那会让我被禁止。我会被封号的。
编辑:这个问题一般不是如何停止应用程序。这个问题是关于如何停止托管在 OpenShift 服务器上的 Spring MVC wep 应用程序。并且没有这些答案在该链接中不起作用。
【问题讨论】:
-
您需要做的就是根据逻辑条件停止您的应用程序,例如
while (validConditionToContinue()) { yourProcessingHere(); }。当条件不再适用时,程序将自然退出。由您的应用程序触发它如何退出该循环。 -
@ManoDestra 我想要一个特定的命令来停止应用程序。该特定命令是 Runtime.getRuntime().exit(0)。谢谢
-
不好的做法。除非发生了需要立即退出应用程序的绝对灾难性事件,否则您不应要求该命令。它不应用于正常退出应用程序。这可以使用普通逻辑非常简单地完成。除非您使用关闭挂钩:stackoverflow.com/questions/3715967/…。您当前的上述要求与该场景并不匹配。你应该用逻辑来处理它,并且比使用运行时强制退出更优雅地退出你的应用程序。
-
@ManoDestra 我已经意识到我的方法存在问题。我会称之为意想不到的副作用。副作用是我的应用程序会在一段时间后自动重新启动。哈哈。我不想要那个。我有 Runtime.getRuntime().exit(0) 专门为了不发生这种情况。我不希望我的应用程序在没有我重新启动的情况下重新启动!现在,来到你的方法。如果我按照您的方法进行,那么程序仍然不会停止。如果是假的,就不要运行我的进程。但是申请还在!当然它不会运行我的进程,但我的应用程序仍在运行。
-
@ManoDestra 我想要我的应用程序的句号!有办法吗?谢谢