Выполнить сценарий оболочки из весеннего веб-приложения, развернутого на cloudfoundry

Я пытаюсь вызвать Btrace-скрипт из веб-приложения Spring, развернутого на cloudfoundry.

Команда выполнения - /var/vcap/data/dea/apps/petclinic-0-fef4b0e052097a0cd2bedb8018c28dcd/tomcat/webapps/ROOT/WEB-INF/classes/bin/btrace.sh 532 /var/vcap/data/dea/apps petclinic-0-fef4b0e052097a0cd2bedb8018c28dcd / кот / WebApps / ROOT / WEB-INF / классы / бен /DatabaseQueries.java

Но я получаю эту ошибку:

java.io.IOException: не удается запустить программу "/var/vcap/data/dea/apps/petclinic-0-fef4b0e052097a0cd2bedb8018c28dcd/tomcat/webapps/ROOT/WEB-INF/classes/bin/btrace.sh": java. IOException: ошибка =13, в доступе отказано

Я нажимаю на приложение с полными правами доступа к скрипту, но ошибка сохраняется.

Как мы можем выполнить скрипт shell / bat из весеннего веб-приложения на cloudfoundry

1 ответ

Права доступа к файлам, передаваемым в Cloud Foundry, доступны для чтения / записи владельцем файла. Вам нужно сделать исполняемый скрипт из вашего приложения перед его запуском:

String btracePath = System.getenv().get("HOME") + "/tomcat/webapps/ROOT/WEB-INF/classes/bin/btrace.sh";
String cmd = "chmod +x " + btracePath;
Runtime run = Runtime.getRuntime();
Process pr = run.exec(cmd);
try {
    pr.waitFor();
} catch (InterruptedException ex) {
    ex.printStackTrace();
}
Другие вопросы по тегам