Я унаследовал кодовую базу веб-сервисов Java (BEA/Oracle Weblogic) и вам нужно запустить/запустить внешнее фоновое приложение с веб-сервиса.Лучший способ запуска внешнего процесса с веб-службы Java?
Я уже пробовал:
ProcessBuilder pb = new ProcessBuilder(arg);
pb.start();
, а также:
Runtime.exec(cmdString);
Но я испытываю странное поведение при запуске приложения таким образом (то есть запущенное приложение перестает работать, даже если процесс по-прежнему активен. - Приложение отлично работает при ручном запуске из обычной командной строки).
Есть ли лучший способ запуска внешних процессов?
EDIT: ----------------------
У меня есть некоторая дополнительная информация, которая может помочь пролить свет на эту проблему.
- Процесс, который мы пытаемся начать потребует часов, чтобы завершить так дожидаясь завершения (с использованием
waitfor()
) в WebService не будет идеальный сценарий. - Да, процесс, который мы пытаемся начать с WebService был создан одним из членов команды [кия: ваши глаза ролл ... теперь]
Я имел успех когда я использую процесс строителя для запуска сценария bash, где внешнее приложение запускается как фоновый процесс (с использованием «&»).
#!/bin/bash
java -jar myApp.jar &
Это явно создает осиротевший процесс, но по крайней мере приложение продолжает выполнять.
Спасибо за дополнительные вопросы. Я отредактировал мой вопрос, чтобы включить следующее: «Да, процесс, который мы пытаемся начать с веб-службы, был создан другим членом команды [cue: your eyes roll ... now]» – Nate
Также показано то же поведение как в Windows, так и в Linux. – Nate