Dia 29/06/10 a Apache Software Foundation lançou a versão 7 do seu famoso Servlet Container, o
Tomcat 7, ainda é versão beta mas já deve estar bem estável, neste post pretendo descrever algumas melhorias e novas funcionalidades com foco no desenvolvimento Java e construir alguns exemplos.
Especificação JEE6O Tomcat 7 implementa completamente a especificação
Servlet 3.0, JSP 2.2 e EL 2.2 que fazem parte do JEE6, porém ainda não disponibiliza outras especificações importantes como JSF 2.0, CDI 1.0, MB 1.0 e até mesmo a definição Web Profile existente no Glassfish 3 que possui o EJB Lite, mantendo assim a característica principal de Servlet e JSP Container de suas versões anteriores.
Suporte a Servlet 3.0Esta especificação traz facilidade de desenvolvimento através de annotations, registro dinâmico de Servlet e Filters em tempo de execução, Servlet assíncrono e melhorias de segurança.
Assim para criar um Servlet basta herdar HttpServlet e utilizar a annotation @WebServlet e definir o nome para requisição do mesmo, sem a necessidade de configurar o arquivo web.xml.
@WebServlet("/TesteServlet")public class TesteServlet extends HttpServlet {protected void doGet...protected void doPost...}Autenticação na camada de programaçãoEstá disponível métodos de login e logout na request (especificação JEE6).
Servlet assíncronoA especificação Servlet 3.0 define suporte a requisições assíncronas, evitando se assim a necessidade de criação de Threads quando não há necessidade da espera do resultado do processamento, como em aplicações Comet, aumentando também a escalabilidade.
O Tomcat 7 da suporte a requisição assíncrona, mas não consegui identificar na documentação o quanto disto está concluído.
Web FragmentA especificação Servlet 3.0 definiu o Web Fragment para facilitar a plugabilidade entre os componentes, assim ao utilizar um
jar como o Struts, Spring ou até mesmo um componente desenvolvido por você não será mais necessário alterar o web.xml para definir as configurações da bibliotecas, estas configurações estarão disponíveis no web-fragment.xml do jar, localizado na pasta META-INF.
Uma consideração é que as configurações básicas de um Servlet poderiam ser feitas por anotações, sem a necessidade de utilização do web.xml ou web-fragment.xml, mas há outras configurações que ainda não são possíveis via annotation.
Interface de administraçãoInfelizmente ainda não disponibiliza uma interface de administração tão completa como a do Glassfish, mas tem o essencial para gerenciamento da aplicação.
Para habilitar a utilização desta interface é necessário atribuir a role
manager-gui a um usuário no arquivo
conf/tomcat-users.xml e remover os comentários.
<!-- Remover esta linha<role rolename="tomcat"/><role rolename="role1"/><user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/><user username="both" password="tomcat" roles="tomcat,role1"/><user username="role1" password="tomcat" roles="role1"/>--> Remover esta linha
Nível de compilação 1.6
Utiliza como padrão o nível de compilação 1.6, o que torna o Java 6 requisito para funcionamento.
Otimização de códigoNesta versão houve várias melhorias no código como utilização de generics, remoção de imports não utilizados, atributos, parâmetros e métodos.
Todos os métodos depreciados foram removidos, é importante uma atenção a isto, pois se você possui componentes para versões anteriores do Tomcat eles podem não funcionar corretamente nesta versão.
Prevenção e detecção de vazamento de memóriaAjuda os usuários a identificar estouro de memória em suas aplicações e até mesmo bibliotecas de terceiros, estava previsto para o Tomcat 7, mas acabou sendo implantado no Tomcat 6 devido a sua relevância.
Caminhos para o contextoNesta versão é possível definir outros caminhos para o contexto do servidor, permitindo assim que outros diretórios ou arquivos WAR sejam mapeados para o contexto.
Para obter a lista completa de melhorias, correções e novas funcionalidades consulte a documentação do produto.