Я унаследовал кодовую базу веб-сервисов Java (BEA / Oracle Weblogic) и мне нужно запустить / запустить внешнее фоновое приложение из веб-сервиса.
Я уже пробовал:
ProcessBuilder pb = new ProcessBuilder(arg);
pb.start();
а также:
Runtime.exec(cmdString);
Но при запуске приложений подобным образом наблюдается странное поведение (т. Е. Запущенное приложение перестает работать, даже если процесс все еще активен. - Приложение работает нормально при запуске вручную из обычной командной строки).
Есть ли лучший способ запуска внешних процессов?
РЕДАКТИРОВАТЬ: ----------------------
У меня есть дополнительная информация, которая может пролить свет на проблему.
- Процесс, который мы пытаемся запустить, потребует нескольких часов, поэтому ожидание завершения (с помощью
waitfor()
) в веб-сервисе не будет идеальным сценарием.
- Да, процесс, который мы пытаемся запустить с веб-сервиса, был создан одним из членов команды [кий: ваши глаза закатились ... сейчас]
У меня был успех , когда я использовал компоновщик процессов для запуска bash-скрипта, когда внешнее приложение запускалось как фоновый процесс (с использованием «&»).
#!/bin/bash
java -jar myApp.jar &
Это, очевидно, создает потерянный процесс, но по крайней мере приложение продолжает выполняться.