Я разрабатываю две java-программы, которые запускаются в отдельной VM, которые имеют типичные отношения между сервером и клиентом. Используя ant параллельные/последовательные задачи, я смог получить ant для запуска сервера, а затем для клиента. Мне бы это понравилось, так что, когда клиентский процесс остановился, ant убивает сервер. Я видел, как это было сделано с пользовательскими задачами ant для конкретных серверных приложений (например, TomCat), существует ли какой-либо метод для этого с помощью общих java-процессов?
Остановка параллельной задачи java с помощью ant
Ответ 1
Поскольку вы разрабатываете серверное приложение, вы можете прослушать команду "shutdown". Затем вы можете ant отправить команду shutdown при выходе клиента, например:
<parallel>
<server .../>
<sequential>
<client ... />
<!-- client has finished, send stop command to server -->
</sequential>
</parallel>
Другим вариантом, который может работать для вас, является запуск сервера внутри элемента daemons
.
<parallel>
<daemons>
<server .../>
</daemons>
<sequential>
<client ... />
</sequential>
</parallel>
Это заставит сервер работать в потоке демона, который не предотвратит завершение работы ant. Когда ant останавливается, все потоки демона, включая ваш сервер, будут завершены.