Хорошая библиотека управления технологическими процессами Java
Управление процессами Java, как известно, плохое - в основном из-за недостаточной поддержки классов Java VM/JDK (например, java.lang.Process).
Мне интересно, есть ли там хорошие библиотеки с открытым исходным кодом, которые надежны.
Требования:
- УПП
- Процессы запуска/остановки
- Управление STDIN и STDOUT
- кросс-платформа (по крайней мере, Linux,
Windows, Solaris, HP и IBM в
этот порядок)
- (необязательно) перезагружаемый
- (желательно) зрелый
Ответы
Ответ 1
Java Service Wrapper может быть тем, что вы ищете. Он кросс-платформенный, может быть использован для запуска вещей как службы Windows, захвата ввода-вывода и, как правило, полного управления любым java-приложением. Он очень легкий и хорошо спроектирован. Atlassian использует его для упаковки своих продуктов (Jira, Bamboo и т.д.), Поэтому он тестировался в бою.
Ответ 2
Как насчет Apache Commons Exec?
Ответ 3
Еще одно требование... поддержка кросс-платформы для убийства осиротевшего процесса. С java.lang.Process
(и Apache Commons Exec) невозможно отключить внешние процессы, когда приложение Java делает жесткую остановку (kill -9). Мне бы очень хотелось найти библиотеку, которая может справиться с этой проблемой лучше.
Одним из решений может быть хранение PID в некотором ресурсе на диске, а затем уничтожение процессов при перезапуске приложения Java. Конечно, это зависит от платформы, поэтому хорошая библиотека с кросс-платформой будет фантастической.