java在Web服务器关闭时调用contextDestroyed方法
我创建了一个只有一个servletContext列表器的webapp
代码如下:
我试过用Runtime.getRuntime()
,但没用。所以,虽然谷歌搜索遇到了ProcessBuilder
,但它也不起作用
我可以通过在UNix box上从控制台运行来执行脚本
下面代码的目的是在服务器停机时执行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();
}
}
}
# 1 楼答案
服务器可能会停机的原因有很多:
嗯