2012-02-12 2 views
2

Я использую WebApplication (для Tomcat) с использованием netbeans в Windows 7. Для запуска Web-приложения мне нужно запустить insall-script один раз.Tomcat deploy: make included script executable

Этот скрипт (* .bat для окон и * .sh для Linux входят в моей войне-файл (WEB_INF).

Теперь каждый раз, когда я развернуть WAR-файл и хочу запустить скрипт на Linux I должен вызвать

chmod +x install.sh 

первого.

есть ли способ, что этот сценарий может быть исполняемый по умолчанию? Я не хочу, чтобы выполнить некоторые дополнительные команды после Deploy, чтобы сделать скрипт исполняемым .

Для уточнения: Я не новичок в Linux, и я знаю, как устанавливать права исполняемого файла на файлы. Это не проблема. Моя проблема: что мне нужно сделать, чтобы этот скрипт исполнялся сразу после того, как tomcat развернул мой * .war-файл (распаковал его). Если бы я использовал Linux для разработки, я бы постарался установить права в моих источниках (возможно, я попробую, когда у меня будет немного свободного времени). Но я использую Windows и netbeans.

Есть ли какие-либо атрибуты, которые я могу установить, чтобы достичь моей цели, или можно достичь этого с помощью муравья?

Кстати: Существуют ли связанные с безопасностью проблемы с этим подходом? Скрипт ищет java-исполняемый файл и вызывает javabased GUI-installer ...

ответ

2

Изменение разрешений во время инициализации приложения, следующие:

String [] command = {"/bin/chmod","+x",full_path_to_install.sh}; 
Runtime rt = Runtime.getRuntime(); 
Process pr = rt.exec(command); 
pr.waitFor(); 

позволяет приложению устанавливать исполняемые разрешения с помощью сценария. Он не является исполняемым сразу после того, как tomcat развернул ваш военный файл, но незадолго до того, как ваше приложение использует его.

+0

Это звучит неплохо. Я буду смотреть на него ближе к следующей неделе, так как я должен закончить еще один проект прямо сейчас. – AlexS

0

Предполагая, что вы каждый раз вызываете один и тот же «install.sh», вам нужно установить бит выполнения только один раз. Кроме того, исполняемый бит должен быть установлен только для пользователя (команда, которую вы предоставили, будет устанавливать его для всех).

 
chmod u+x install.sh 
+0

Извините, я думаю, вы неправильно поняли мой вопрос. См. Мое редактирование для деталей. – AlexS

+0

Об установке исполняемого файла для всех: вы совершенно правы в этом. Конечно, я должен установить это право только для пользователей, которым требуется/разрешено выполнение этого скрипта, но сейчас я в разработке;) Я буду заботиться о разрешениях, когда все работает – AlexS

+0

А, так что вы хотите, чтобы оболочка скрипт внутри web-inf установлен в исполняемый файл? Единственный практический способ, которым вы можете это сделать, - выполнить команду chmod в родительском скрипте. Но я должен сказать, что я никогда не слышал о том, что в военном файле есть сценарий оболочки. – bubbly