Я пытаюсь использовать ProcessBuilder для выполнения сценария оболочки на моем Linux-сервере, с сервлета, запущенного на WebSphere Application Server.ProcessBuilder.start() возвращает 0, но не выполняет сценарий оболочки
Код возвращает 0 (используя .waitFor()), но скрипт не работает. Если я помещаю недопустимый путь к скрипту, я получаю исключение «файл не найден», поэтому я знаю, что он находит скрипт ... но не работает.
Сам сценарий вызывает другой скрипт, который должен в конечном итоге выводить zip-файл (у меня также есть строка «touch», чтобы увидеть, что там происходит ... но ничего не делает).
Скрипт отлично работает из командной строки, используя ту же команду, что и я, передавая с .start().
Вот отрывок из моего Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("in doPost");
System.out.println("about to kick off ProcessBuilder");
ProcessBuilder pb = new ProcessBuilder("/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/localhostNode01Cell/Svc_war.ear/Svc.war/test.sh");
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
int ch;
while ((ch = br.read()) != -1)
System.out.println((char)ch);
br.close();
try {
int exitVal = process.waitFor();
System.out.println("Exit Value: " + exitVal);
} catch (InterruptedException e) {
e.printStackTrace();
}
.redirectErrorStream() и .getInputStream() должны были увидеть, если я мог бы поразить некоторые проблемы Buffer, которые я читал другие относятся к (хотя я Wouldn Не ожидайте, что .waitFor() вернет 0, если это так).
Это мой первый набег на ProcessBuilder, поэтому я надеюсь, что у меня просто отсутствует что-то очевидное.
Любые идеи/подсказки будут оценены.
Ах да ... вот выход я получаю:
[4/5/13 21:32:41:791 PDT] 0000004d SystemOut O in doPost
[4/5/13 21:32:41:791 PDT] 0000004d SystemOut O about to kick off ProcessBuilder
[4/5/13 21:32:41:818 PDT] 0000004d SystemOut O Exit Value: 0
Спасибо.
Извините ... не упомянул, в настоящее время у меня работает WebSphere под той же учетной записью, с которой я тестировал, из командной строки (корень). – gMoney