我创建了一个只有一个servletContext listner的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();
}
}
}
答案 0 :(得分:1)
您是否已将ServletContextListener
放入web.xml
?
看一下这个例子:http://www.javabeat.net/2009/02/servletcontextlistener-example/
答案 1 :(得分:0)
服务器出现故障的原因有很多:
HTH