Linux Tomcat部署:使包含的脚本可执行

Linux Tomcat部署:使包含的脚本可执行,linux,tomcat,ant,Linux,Tomcat,Ant,我正在Windows7上使用netbeans开发一个WebApplication(用于Tomcat)。要运行Webapplication,我需要运行一次insall脚本 此脚本(*.bat for windows和*.sh for linux包含在我的war文件(WEB_INF)中 现在,每当我部署WAR文件并希望在linux上运行脚本时,我都必须调用 chmod +x install.sh 首先 有没有一种方法可以使这个脚本在默认情况下可执行?我不想在部署之后执行一些额外的命令来使脚本可执行

我正在Windows7上使用netbeans开发一个WebApplication(用于Tomcat)。要运行Webapplication,我需要运行一次insall脚本

此脚本(*.bat for windows和*.sh for linux包含在我的war文件(WEB_INF)中

现在,每当我部署WAR文件并希望在linux上运行脚本时,我都必须调用

chmod +x install.sh
首先

有没有一种方法可以使这个脚本在默认情况下可执行?我不想在部署之后执行一些额外的命令来使脚本可执行

请澄清: 我不是Linux新手,我知道如何设置文件的可执行权限。这不是问题。我的问题是:我必须做什么,以便在tomcat部署了我的*.war文件(解包)后,这个脚本就可以执行。如果我也要使用Linux进行开发,我会尝试根据我的源代码设置权限(也许我有更多的空闲时间时会尝试一下)。但我正在使用Windows和netbeans

我可以设置哪些属性来实现我的目标,或者是否可以使用ant实现这一目标


顺便问一下:这种方法是否存在与安全相关的问题?该脚本查找java可执行文件并调用基于java的GUI安装程序…

假设每次调用相同的“install.sh”,则只需设置一次执行位。此外,只需为用户设置可执行位(您提供的命令将为每个人设置它)

chmod u+x install.sh
在应用程序初始化期间更改权限,请执行以下操作:

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

允许应用程序在使用脚本之前设置可执行权限。在tomcat部署war文件之后,但在应用程序使用war文件之前,该脚本不可执行。

对不起,我想你误解了我的问题。有关详细信息,请参阅我的编辑。关于为每个人设置可执行文件:你完全正确。当然,我应该ld仅为需要/允许执行此脚本的用户设置此权限,但我现在正在开发中;)当一切正常工作时,我会考虑权限问题,所以您希望web inf中的shell脚本设置为可执行?唯一可行的方法是通过父脚本中的chmod命令。但是,我必须说,我从来没有听说过将shell脚本放在war文件中。不幸的是,现在我没有parent脚本。但可能我必须编写一个。在war文件中使用脚本的原因是为了简单。这样我就不必关心当前部署的应用程序版本。脚本始终适合(我不必关心CATALINA_基地在哪里,因为我已经在那里了……最重要的是:通过将此脚本包含在我的war文件中,可以更轻松地共享应用程序,因为它只有一个文件。听起来不错。下周我将更仔细地查看它,因为我现在必须完成另一个项目。
String [] command = {"/bin/chmod","+x",full_path_to_install.sh};
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec( command );
pr.waitFor();