Diego Plentz

03 Oct, 2008

Tomcat is deprecated

Posted by: Diego Plentz In: java

Marky is frustrated by Hockey.Lover
Tomcat is deprecated. Use Jetty instead.

É exatamente esse a impressão que eu tenho depois de migrar os nossos servidores para o Jetty. Depois de ver muita gente reclamando de OutOfMemory no Tomcat, inclusive aqui da empresa, resolvemos tentar o Jetty.

A tempo que escutava o pessoal da Caelum (e principalmente o Kung) falando bem do Jetty, mas só quando se começa a usar que se percebe as vantagens. Como temos várias aplicações rodando (diferente do GUJ, que era só o JForum, acredito), imaginei que a troca não seria tão smooth assim.

Claro que antes de sair trocando tudo, fizemos alguns testes pra ter certeza que tudo ia ocorrer bem. Por sinal, a troca foi bem tranquila do ponto de vista da aplicação, só tivemos que fazer alguns ajustes:

  • o Jetty lança java.util.Collections$UnmodifiableMap ao tentar modificar diretamente o (Hash)Map devolvido com request.getParameterMap() ao invés de usar o método setAttribute() do request - coisa que o Tomcat deixa;
  • Diferenças ao tentar recuperar um resource do sistema utilizando como pasta base “.”, ou usar “..” pra navegar na estrutura de pastas. Para resolver, basta usar como pasta base “/” (ex: “/com/foo/resources/xpto.xml”) e colocar dentro do WEB-INF/classes;
  • E a última, mas simples de resolver, é que o Jetty deixa habilitado listagem de diretórios. Você pode alterar isso no etc/webdefault.xml, trocando o atributo dirAllowed para false;

Feitos esses ajustes, chegou a vez de configurar o Jetty para atender aos diferentes domínios. E é aqui que vi uma das grandes vantagens do Jetty. A parte de configuração dele fica muito organizada. Fizemos da seguinte forma:

  • Para cada aplicação (pra cada .war na pasta /webapps do Jetty), criamos um arquivo de contexto no /contexts (não é necessário, mas como temos urls diferentes e contextos diferentes, tivemos que customizar - e acabamos ganhando um brinde que conto depois)
  • Cada arquivo de context tem uma estrutura estupidamente simples:


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
    <Configure class="org.mortbay.jetty.webapp.WebAppContext">
      <Set name="contextPath">/</Set>
      <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/demo_foo.war</Set>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>

      <Set name=”virtualHosts”>
        <Array type=”String”>
          <Item>demo.foo.com</Item>
        </Array>
      </Set>

    </Configure>

Explicando por partes:

  • WebAppContext é o tipo de contexto que você vai usar, estamos usando esse pois permite o hotdeploy
  • contextPath serve para dizer (óbvio) o contexto que quer que a aplicação fique disponível. Aqui prefirimos colocar todas no contexto / e configurar diferentes Virtual Hosts pra cada aplicação.
  • a propriedade war só diz qual .war (que pode ser um exploded war também) que vai ser deployado naquele contexto
  • na seção que diz virtualHosts, você pode configurar todos os endereços que quer que sua aplicacão responda. Para ela aceitar mais de um endereço, basta ir adicionando Item’s com as outras URLs. Aproveitando, no Jetty 7 será possível usar wildcards!

Com isso feito, ficou muito fácil configurar o deploy automático de todas nossas aplicações, pois basta substituir o arquivo .war e dar um touch no arquivo de contexts que o Jetty faz reload do contexto (e esse é o brinde! )! Agora, com o Jetty combinado ao Hudson, com um clique podemos fazer deploy de qualquer uma das nossas aplicações em um ambiente específico ou mesmo em todos, automaticamente. Mas isso já é assunto para um outro post.

Links Relacionados

Popularity: 5% [?]

9 Responses to "Tomcat is deprecated"

1 | Rafael Ponte

October 3rd, 2008 at 2:09 pm

Avatar

Muito interessante!

Tenho ouvido muita gente falando bem do Jetty, mas ainda não tive oportunidade para efetuar alguns testes.

Depois de alguns depoimentos, como este, acredito que me sinto mais confiável e motivado a efetuar alguns testes e quem sabe até alguma substituição se assim for necessário.

Abraços.

2 | Fabio Kung

October 3rd, 2008 at 5:45 pm

Avatar

Eu te disse, eu te disse… ;-)

ps.: no servidor do guj, a home do guj e o jforum rodam no jetty. Mas rodam no mesmo contexto!

3 | gustavo

October 6th, 2008 at 1:49 pm

Avatar

já utilizou o jbossweb?

4 | Diego Plentz

October 6th, 2008 at 1:49 pm

Avatar

Nunca usei Gustavo.

5 | Christiano Milfont

October 8th, 2008 at 3:38 pm

Avatar

Bacana, mas sobre esse ponto:
“Depois de ver muita gente reclamando de OutOfMemory no Tomcat, inclusive aqui da empresa, resolvemos tentar o Jetty”
Vocês guardaram as estatísticas de profiler do uso de memória no tomcat para compararem com o Jetty?
Curioso! :)

6 | Tomcat: Rest in Peace? - CMilfont Tech

October 10th, 2008 at 12:42 pm

Avatar

[...] de software do Brasil) de quedas e lentidão. Há poucos dias o Diego Plentz também publicou sobre experiência recente, até citando o artigo do Kung e dando explicações sobre as mudanças necessárias que teve que [...]

7 | Rafael Rocha

October 13th, 2008 at 9:17 am

Avatar

Vocês atualizaram o tomcat a partir do changelog e releases de correções que eles disponibilizaram.

Vi que várias correções de memory leaks foram feitas.
Qual a versão do tomcat exata que vocês utilizavam?

8 | Diego Plentz

October 13th, 2008 at 9:20 am

Avatar

5.5.26 se não me engano.

9 | mmrack

November 26th, 2008 at 11:47 pm

Avatar

Hei Plentz, que area de memoria estava dando OutOfMemory? Nao vai me dizer que era a PermaGen, “pela amor”, né, hahaha?!

Mas o Jetty (…Li, ahahah) é bom mesmo.

Comment Form


  • nilton são pedro da aldeia: olá pessoal, se alguém fez o contrato de fidelidade de 12 meses pelo serviço 3g da claro ou qualquer outra operadora e não está satisfeito, pode
  • Teobaldo: BOA NOITE PESSOAL! ACHO QUE VCS ESTAM DETONANDO D+ A CLARO. JÁ VERIFICANDO SE VCS ESTAM CONECTANDO NO SISTEMA 2G OU 3G? TB NÃO FIQUEM TENTANDO BA
  • Juarez: Assinei a banda larga 3G da Claro e me arrependi. Vou cancelar esta porcaria. Minha velocidade nominal é de um 1 mbps e recebo velocidade real de i

Flickr PhotoStream

  • IMG_3916
  • IMG_3723
  • IMG_3722
  • IMG_3721
  • IMG_3718
  • IMG_3717
  • IMG_3716
  • IMG_3715

About

This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from.