Caros,
Como reiniciar o servidor tomcat via aplicação rodando dentro do tomcat?
Alguma sugestão.
Obrigado.
Caros,
Como reiniciar o servidor tomcat via aplicação rodando dentro do tomcat?
Alguma sugestão.
Obrigado.
Tranquilo!
Cara assim, até onde vai meu conhecimento, isso não é possível de se implementar, acredito que seja até por questões de segurança.
Valew!
Ola, é possivel sim utilizando JMX é totalmente viavel.
Vou fazer um howto aqui para vc, eu rodei em um tomcat 6 no ubunto.
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
Com isto vc vai ativar o JMX do seu tomcat.
Va no seu console e digite: jconsole (aqui é para vc aprender)
No jconsole digite a url para conexão remota:
service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi
Navegue no jconsole pelos menus Catalina\Engine (imagem em anexo)
Va em operation
Click em stop
Pronto vc acabou de baixar seu server via JMX
Facil não é?
Com isso o que vc deve aprender: existe um MBean chamado Engine dentro do pacote catalina, que tem operações de start\stop para controlar o tomcat.
Agora vc deve acessa-lo via código java
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://:8050/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
ObjectName mbeanName = new ObjectName("Catalina:type=Engine");
Engine mbeanProxy =
JMX.newMBeanProxy(mbsc, mbeanName, Engine.class, true);
mbeamProxy.stop();
claro que isto é so uma poc da vida vc não deve colocar isto em produção
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
O código que postei acima só vai rodar em java6 a crição de proxy (abaixo) não existe no java5
JMX.newMBeanProxy(mbsc, mbeanName, Engine.class, true);
So um detalhe isto não vai reiniciar o server todo somente o enginne, se vc pode matar o server chamando a MBean Server metodo await só que ai não da para subir por JMX rsrs, prq vc precisa fazer isto??
Olá,
Essa solução não serve pois preciso parar tudo e voltar, stop e start ou restart.
Pensei em usar o Wrapper http://yajsw.sourceforge.net/ mas acredito ser canhão para matar mosquito.
Outra solução que pensei e em fazer um Runtime.getRuntime().exec(“java -jar /opt/Tomcat/bin/bootstrap.jar stop”);
O problema é como fazer o start.
Alguma sugestão, obrigado.
Alguma ideia? Seria impossível?
Impossível… nunca… rsrs
Meu caro já resolveu seu problema ?
Realmente por JMX do Toncat não rola. Pois o JMX é levantado pelo Toncat ou seja, quando o Toncat parar sua comunicação também termina.
Já pensou em criar um aplicativo para ficar escutando suas chamadas ???
Se vc conseguir fazer isso o resto é mole. Só identificar o sistema operacional e executar o comando de start, stop dos serviços.