我创建了一个只有一个 servletContext 侦听器的 webapp。
下面是代码:我试过了,Runtime.getRuntime()
但这没有用。因此,虽然谷歌搜索遇到了,ProcessBuilder
但它也不起作用。
我可以通过从 UNIX 框上的控制台运行来执行脚本。
下面代码的目的是执行 sh 脚本,例如echo Hello > test.txt
在服务器出现故障时捕获某些内容。但是当服务器宕机时,这个脚本不会被执行。不知道为什么conextDestroyed
没有被调用,或者如果conextDestroyed
被调用,为什么脚本没有被执行。
public class MyTestContextListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
ProcessBuilder pb = new ProcessBuilder("/bin/bash","/local/test/tomcatContextTest/tomcatContextListener.sh");
try {
pb.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
ProcessBuilder pb = new ProcessBuilder("/bin/bash","/local/test/tomcatContextTest/tomcatStartContextListener.sh");
try {
pb.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}