Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Перезапуск приложения. / 7 сообщений из 7, страница 1 из 1
27.02.2012, 17:53:47
    #37680716
Slider_116
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Доброго времени суток.

Возникла такая проблема. Есть работающее приложение. В некоторый момент мне необходимо его остановить и перезапустить. Для запуска приложения есть bat-файл.

Можно ли как-нибудь сказать приложению, мол "убей себя", но перед смертью запусти-ка вот это?

И в результате оно должно закрыться, запустив этот батник (себя же).

Или может есть какой-нибудь другой способ это реализовать (без бат-файла)?
...
Рейтинг: 0 / 0
27.02.2012, 18:05:30
    #37680761
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Slider_116Можно ли как-нибудь сказать приложению, мол "убей себя"

System.exit() изнутри.
SIGTERM / Ctrl+C снаружи ( http://www.sql.ru/forum/actualthread.aspx?tid=854811)


Slider_116, но перед смертью запусти-ка вот это?

https://www.google.com/search?q=Java+shutdown+hook

Slider_116И в результате оно должно закрыться, запустив этот батник (себя же).
Или может есть какой-нибудь другой способ это реализовать (без бат-файла)?
Тут сложнее. Если повезет, то всё заработает без проблем, через Runtime.exec/ProcessBuilder
Если нужно только под виндой, то можно использовать комбинацию команд start и cmd, чтобы отвязать новый процесс от старого.

Остаётся только забороть конкуренцию этих двух процессов, если такая имеется.
...
Рейтинг: 0 / 0
27.02.2012, 18:11:38
    #37680776
Slider_116
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Убить процесс нужно только изнутри. Если я все правильно понимаю System.exit() должен подойти.

И при вызове System.exit() выполнится shutdown hook, в котором можно запустить нужный файл через exec(). Верно?

Не совсем понял про конкуренцию. Возможно формулировка "запустить себя же" не совсем корректна. Мне нужно чтоб старый процесс полностью умер, а новый (из этого же батника) запустился.
...
Рейтинг: 0 / 0
27.02.2012, 18:16:26
    #37680794
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Slider_116Мне нужно чтоб старый процесс полностью умер, а новый (из этого же батника) запустился.
Ну, если система даст приоритет новому процессу и он запустится раньше, чем умрет старый? Если это нормально, то и проблемы нет.
...
Рейтинг: 0 / 0
27.02.2012, 18:24:41
    #37680810
Slider_116
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Думаю с этим проблем не возникнет. Спасибо за совет. Буду пробовать.
...
Рейтинг: 0 / 0
28.02.2012, 16:35:10
    #37682582
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Slider_116В некоторый момент мне необходимо его остановить и перезапустить. Для запуска приложения есть bat-файл.
Можно ли как-нибудь сказать приложению, мол "убей себя", но перед смертью запусти-ка вот это?
Код: sql
1.
cmd /k goto /?&if /?

Или может есть какой-нибудь другой способ это реализовать (без бат-файла)? Службы .
...
Рейтинг: 0 / 0
28.02.2012, 19:51:06
    #37683089
jab
jab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перезапуск приложения.
Под винду я делал через стартовый параметр. Приложение при запуске ходило смотреть есть ли новая версия. Если новой версии нет, то просто продолжало выполнение. Если новая версия есть, то приложение копировало само себя в корневой папке и свою копию запускало с параметром, который говорил о том, что надо обновиться и закрывалось. Копия запускалась и видяла что есть параметр обновления. Копия искала главное приложение и удаляло его, если не получалось удалить, то ждало немного и снова пробовало удалить и так в цикле 3 попытки с перерывами. Если не удалось удалить, то выдавало сообщение о невозможности произвести обновление (такое может быть в случае, если основное приложение не закрылось по какойто там причине аварийной). Если удалилось, то шло на сервер за новой версией. Если вдруг файл новой версии не удалось найти, то делало копию себя заместо новой версии, или копировало новую версию из сети.

Как это сделать кросплатформенное... пусть это будет Вам домашним заданием.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Перезапуск приложения. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]