Java: Как позволить перезапуск программы по вашему желанию?
Нонсенс перед началом текста:
Процедура здесь включает в себя веб-приложения на B / S, в том числе Java Применение класса C / S из Standalone.
Почему вы собираетесь перезагрузить?
Сцена 1:В распределенной среде, как правило , существует много приложений (например, Java приложений , включая C / S, и веб — приложений с B / S) развернуты в различных средах Для управления, некоторые государственные конфигурации, такие как:. Сигнализация учетной записи электронной почты / пароле / SMTP, общая информация об учетной записи FTP, даже JDBC соединение информационная строка и т.д., равномерно расположенных в местах (общий каталог хранения сети, Redis кэш, базы данных, Zookeeper, дистанционное обслуживание Все может быть), что более удобно управлять , Информация также хорошо, и изменения конфигурации подписки приложений. Когда он будет обнаружен, если это среда Spring, вызов ApplicationContext.refresh (), и конфигурация будет вновь обновлена. Но для специальной конфигурации источника данных, более трудно получить его, рассмотрим подключение пула уже подключенный объект Connection, который был найден через старый DataSource, и SQLSESOSSSSTIONFAACTORY, экземпляр Mapper и т.д., чтобы быть связано с старый DataSource. Вся кровь, это трудно гарантировать , что лучший способ для перезагрузки.
Перезагрузка: 428 выпуск
Сцена 2:Напишите программу, есть скрытая ошибка , которая неизбежна, процедура абсолютного нуля ошибки все еще очень редко, если производительность программы увеличивается, производительность программы становится хуже или подделкой, вам необходимо перезапустить, как правило , необходимо дистанционное столкновение Go для Linux, постучать процесс убить, перезапустить Java приложения, которые не знакомо с менеджерами начинающего Linux, и два не может иметь прав на исполнение, поэтому через дружественный интерфейс управления мониторингом, нажмите кнопку перезапуска. перезапуск указанной программы будет легче принимать.
Начало тела:
Во-первых, как программы знают, что им нужно перезапустить?
Очевидно, что если есть программа, пользователь хочет отключить, программа автоматически перезапускается, поэтому цикл, это вредоносная программа, которая не может быть исправлена. Быть
Таким образом, программа должна быть выслушана и получила указание конкретного отдельного процесса, не затрагивая нормальную программу завершения работы пользователя, думая:
При запуске программы, генерировать уникальный UUID (или другой идентификатор, просто зарегистрировать временный узел в Zookeeper), а затем зарегистрировать временный узел в Zookeeper. Быть
Таким образом, до тех пор, пока существует сколько временных узлов под сканирующим / приложение, знать, какие приложения в настоящее время работают. Быть
Администратор хочет написать узел в Zookeeper, когда вы хотите, чтобы перезапустить приложение.
/command/uuid-1 Содержимое узла согласовывается с: restart
Во-вторых, перезапуск приложения Java
Интернет пример кода:
Планировщик заданий Windows — создание простого задания
Runtime.getRuntime().addShutdownHook(new Thread() < public void run() < try < String restartCmd = «nohup java -jar xxx.jar»; Thread.sleep (10000); // ждать 10 секунд, убедитесь, что после завершения граничия выключите себя Logger.debug («Программа перезагружается!»); >catch (Exception e) < Регистратор. Ошибка («перезапускается неудачно, причина:», E); >> >); Rogger.debug («программа готова перезапустить!»); System.exit(0);
Это может быть улучшено:
a) Sleep (10000) ждет 10 секунд, ожидая свой собственный «граничащее», чтобы начать свой собственный «истинный», чтобы убить. Вот 10 секунд, это на самом деле мозг, если вы преследуете совершенство, в теории, до тех пор, пока новый запуск «ветвь» в системном процессе, вы можете уничтожить «истинное тело» человечество.
проблема:Если вы знаете, «подставили» запускаются?
Отвечать:Java может получить выход JPS -L, знать все текущие процессы Java, так что вы можете знать, если запускается указанное приложение. Перед повторным запуском, выход JPS -L получается. После перезапуска, выход JPS -L выполняется, по сравнению с вторичным выходом, и если вы найдете больше новых имен указанного процесса, то это означает, что «отделка» запуск завершен. End себя.
Приложение: Java код получает выход JPS
import org.apache.logging.log4j.*; import java.io.BufferedReader; import java.io.InputStreamReader; public final class RuntimeUtil < private static Logger logger = LogManager.getLogger(); public static String exec(String command) < StringBuilder sb = new StringBuilder(); try < Process process = Runtime.getRuntime().exec(command); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while ((line = reader.readLine()) != null) < sb.append(line); >process.getOutputStream().close(); reader.close(); process.destroy(); > catch (Exception e) < Logger.Error («выполнить внешнюю ошибку команды, командную строку:« + команда », E); >return sb.toString(); > public static String jps() < return exec(«jps -l»); >>
b) Java -jar xxx.ja не очень хорошо, один xxx.jar является строкой, то период компиляции не может быть найден, второй в том, что путь является относительным путем, даже если запуск будет успешным, окончательные JPS отображается имя процесса является JAR, см фактическое соответствие процедура (подробно)Настройка Java -jar процесса Отображаемое имя ), Вы можете получить фактический путь к текущей программе.
public static String getJarExecPath(Class clazz) < String path = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); if (OSUtil.getOSname().equals(OSType.Windows)) < return path.substring(1); >return path; >
Osutil кода изздесьПолучать
В-третьих, перезагрузка веб-приложения
Вот только решение JBoss на JBoss,
В этих двух статьях, способ управления JBoss или команды оболочки было дано, так что по требованию из веб-приложения по требованию:
При нажатии на кнопку «Restart» веб-приложение с интерфейсом мониторинга, фоновый код будет оставлен, а затем повторно включить или Присвоить
Источник: russianblogs.com
unixforum.org
Автоматический перезапуск программы (если конкретно, то битторрент клиента)
Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.
Модератор: Bizdelnick
5 сообщений • Страница 1 из 1
Alex без циферок Сообщения: 19 ОС: Mandriva 2009.0, Ubuntu 8.10
Автоматический перезапуск программы
Собственно вопрос следующий, у меня периодически падает Transmission и хотелось бы его как-то заколдовать на автоматический перезапуск, того же хотелось бы получить от периодически падающей сети (wlan). Поиск юзал, но не нашел. Если было, просьба ткнуть носом))
Источник: unixforum.org
Перезапуск программы по условию
Услуги компании
Консультации по выбору программного обеспечения
Настройка и внедрение
Сопровождение 1С (ИТС)
Доставка и установка
Обучение и сертификация
1С-Отчетность
1С: Програмные продукты
- 1C:ERP Управление предприятием 2
- 1С: Бухгалтерия предприятия
- 1С:Зарплата и управление персоналом
- 1С:Управление торговлей
- 1С:Комплексная автоматизация
- 1С:Розница 8
Отраслевые решения
- 1С:Медицина. Поликлиника
- 1С:Медицина. Федеральные регистры (Продукт снят с продаж)
- 1С:Медицина. Больничная аптека. Редакция 2
Источник: buhconsulting.com