quinta-feira, 1 de julho de 2010

Teste do Tomcat 7

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 JEE6
O 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.0
Esta 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ção
Está disponível métodos de login e logout na request (especificação JEE6).

Servlet assíncrono
A 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 Fragment
A 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ção
Infelizmente 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ódigo
Nesta 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ória
Ajuda 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 contexto
Nesta 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.

Nenhum comentário:

Postar um comentário