Я искал путь для того, чтобы отправить команду на запущенную Java-программу, но большая часть сообщения предложила реализовать listener
или обернуть программу реализацией Jetty
(или другого сервера).
Есть ли способ сделать это без добавления дополнительных зависимостей?
Сценарий: у меня есть Java-программа, которая будет работать неограниченно, и которая будет порождать несколько запущенных потоков. Я хотел бы иметь возможность запускать сценарий, чтобы остановить его, когда его нужно закрыть, как это обычно бывает у серверов сценариев выключения. Это позволит мне обрабатывать процесс останова в программе. Программа работает в среде linux.
Спасибо.
Реализован крюк остановки, и пока он выглядит хорошо. Коды реализации:
final Thread mainThread = Thread.currentThread();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
logger.info("Shut down detected. Setting isRunning to false.");
if(processors != null && !processors.isEmpty()){
for (Iterator<IProcessor> iterator = processors.iterator(); iterator.hasNext();) {
IProcessor iProcessor = (IProcessor) iterator.next();
iProcessor.setIsRunning(false);
try {
iProcessor.closeConnection();
} catch (SQLException e1) {
logger.error("Error closing connection",e1);
}
}
}
try {
mainThread.join();
} catch (InterruptedException e) {
logger.error("Error while joining mainthread to shutdown hook",e);
}
}
});
Спасибо за предложение.
Socket
чтобы сообщить нам процесс, но это предполагает, что процесс прослушивает или, возможно, записывает значение в определенный файл, который отслеживает процесс ...