J’ai créé une webapp qui n’a qu’un seul servletContext listner.
Voici le code: j’avais essayé avec Runtime.getRuntime()
mais cela Runtime.getRuntime()
pas fonctionné. Donc, alors que Google a rencontré ProcessBuilder
cela ne fonctionnait pas non plus.
Je peux exécuter les scripts en exécutant depuis la console sur la boîte UNix.
Le but du code ci-dessous est d’exécuter un script sh comme capturer quelque chose comme echo Hello > test.txt
chaque fois que le serveur tombe en panne. Mais ce script n’est pas exécuté lorsque le serveur tombe en panne. Vous ne savez pas pourquoi conextDestroyed
n’est pas appelé ou si conextDestroyed
se fait appeler pourquoi le script n’est pas exécuté.
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(); } } }
Avez-vous mis votre ServletContextListener
dans votre web.xml
?
Regardez cet exemple: http://www.javabeat.net/2009/02/servletcontextlistener-example/
Il y a plusieurs raisons pour lesquelles le serveur peut tomber en panne:
hth