Galera, essa foi uma questao que eu encontrei em um Mock da OCWCD:
O que realmente acontece quando eu dou um System.Exit em uma servlet?
Eu estou saindo apenas da Servlet ou derrubando toda a aplicacao em que a Servlet esta gerenciando as requisicoes?
Uma duvida tambem, no caso eu nem sei se a mesma se aplica a certificacao, mas no caso, nos temos uma JVM por container, ou uma JVM por maquina?
Opa Jaba,
O System.exit detona a tua aplicação. É como se você pedisse para encerrar a máquina virtual (como você pode ver diretamente no javadocs - Terminates the currently running Java Virtual Machine ). Tinha feito uma gambiarra um dia desses dai para verificar isto e derrubou mesmo
Jaba
Entao, esse metodo e muito mais perigoso do que parece, se eu possuir 3 webapps no meu container e uma chamar o System.Exit, as 3 caem, correto?
Alexandre_Saudate
Exatamente. Já respondendo sua outra questão, temos uma JVM por container. Ou seja, o ideal é ter um container por aplicação.
[]´s
Jaba
Para ter um container por aplicacao, a gente vai ter entao que possuir uma maquina por container? Ou e possivel subir mais do que uma instancia do TomCat por maquina? E agora me surgiu uma duvida: se temos uma JVM por container e nao por maquina, o Tomcat roda em cima de qual JVM, ja que o Tomcat e feito em Java?
E
entanglement
Você pode rodar várias instâncias do Tomcat em uma mesma máquina, desde que as portas e IPs não batam.
Se, no entanto, for necessário usar um mesmo IP e porta para todos os Tomcats, você precisa pôr um Apache HTTP Server na frente, até para otimizar a utilização da máquina no caso de servir arquivos estáticos (como imagens, applets ou páginas HTML ou CSS puras).