2016-07-28 3 views
-2

Я хочу, чтобы мое приложение прерывалось каждые 3 дня. Я просто хочу запланировать метод, который автоматически остановит приложение без какого-либо вмешательства извне (например, сидя на моем рабочем столе и т. Д.).Как остановить приложение изнутри в Openshift

До сих пор, у меня есть это в виду:

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, поскольку они могут фактически остановить весь vm. И это остановит все приложения, размещенные на этом vm. И это заставит меня запретить. Мне будет запрещено.

Редактировать: Этот вопрос не является тем, как остановить приложение в целом. Этот вопрос касается того, как остановить приложение Spring MVC Spring, которое размещено на сервере OpenShift. И ни одна из этих ответов не работает в этой ссылке.

+0

Все, что вам нужно сделать, это остановить приложение на основе логического условия, например. 'while (validConditionToContinue()) {yourProcessingHere(); } '. Затем программа естественным образом выйдет, когда условие больше не будет применяться. И это зависит от вашего приложения, чтобы вызвать, как он выходит из этого цикла. – ManoDestra

+0

@ManoDestra Мне нужна конкретная команда, чтобы остановить приложение. Эта конкретная команда Runtime.getRuntime(). Exit (0). Thanks –

+0

Плохая практика. Вы не должны требовать эту команду, если не произойдет что-то совершенно катастрофическое, требующее немедленного выхода из приложения. Он не должен использоваться для нормального выхода из приложения. Это можно сделать очень просто, используя обычную логику. Если вы не используете крючки остановки: http://stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java. Ваше текущее требование не соответствует этому сценарию. Вы должны обрабатывать его с помощью логики и выходить из приложения более грациозно, чем форсировать выход, используя Runtime. – ManoDestra

ответ

0

Ну, я просто использовал Runtime.getRuntime().exit(0), и он успешно остановил мое приложение. Я не получил запрета или чего-то еще. И я перезапустил свое приложение, чтобы узнать, есть ли какие-либо проблемы. Без вопросов. Так что команда будет делать. Спасибо

Редактировать: Это работает, но функция openshift автоматически перезапускает приложение. Так что это не ответ. Я отвечу здесь, если найду его. Спасибо

+0

Вы поняли, что openshift - это сервер приложений, а не приложение? Вы убиваете весь сервер приложений, чтобы остановить процесс в своем приложении? – tak3shi

+0

Да, я знаю. У них есть проверки безопасности. Никто не может просто иметь простую команду типа System.exit() в своем коде и остановить весь сервер. Они этого не допускают. Так что я не убиваю весь сервер. Я просто хочу убить свое приложение через определенное время. И, следовательно, вопрос –

Смежные вопросы