BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Tomcat 7.0.27 Adiciona Suporte a WebSockets

Tomcat 7.0.27 Adiciona Suporte a WebSockets

O release 7.0.27 do popular container web Java EE Apache Tomcat, liberado no início de Abril, traz como principais novidades o suporte a especificação WebSockets, várias melhorias ao conector NIO que afetam especialmente o suporte a Comet, e detecção de vazamentos de memória (memory leaks) de classloaders em JVMs da IBM. Mas as novidades no Tomcat 7.0.x não param aí, há outras outras novidades dignas de nota nos últimos releases pontuais do projeto.

WebSockets e Comet

WebSockets é um dos novos recursos previstos como parte do padrão HTML5. O objetivo é oferecer suporte a mensagens textuais e binárias, bi-direcionais, entre o navegador e o servidor web, padronizado pela RFC6455. O novo padrão permite a criação de aplicações full-duplex, por exemplo chat e vídeo-conferência, sem onerar o navegador com lógica de pooling e reusando a mesma conexão HTTP, o que também economiza recursos no servidor. Outra vantagem dos WebSockets é não necessitar abrir portas adicionais no firewall. O WebSockets também permite trafegar mensagens assíncronas enviadas pelo servidor (push) ou pelo cliente (poll) simplificando aplicações que demandam atualizações em "tempo real"..

Já o Comet é um mecanismo de programação que mantém a conexão HTTP aberta por um tempo indefinido depois do envio da resposta, permitindo que o servidor reuse esta conexão para enviar informações adicionais ao navegador. Ele é a base de várias técnicas da Web 2.0 como Ajax Push (que seria na verdade um poll) e HTTP Streaming. Diferente do WebSockets, o Comet não é bi-direcional, e não permite o envio de dados binários. Mas tem a vantagem de funcionar com navegadores e servidores web sem suporte ao HTML5.

O Comet é suportado diretamente pela versão 3.0 da API de Servlets (parte do Java EE 6), enquanto o WebSockets será parte do Java EE 7, se a JSR 356 for finalizada dentro do prazo.

A comunidade Tomcat aproveitou a implementação do WebSockets para reescrever o código de gerenciamento de conexões HTTP e a implementação de objetos da API de Servlets como HttpServletRequest/Response, trazendo melhorias no uso do processador e de memória mesmo para aplicações que não utilizem WebSockets nem Comet.

Deploy paralelo

Outras versões recentes do Tomcat trouxeram novidades importantes para o desenvolvedor e para o administrador, mas muitos podem não ter tomado conhecimento por ter havido um incremento apenas no terceiro número de versão, que em outros projetos seria reservado apenas para correções de bugs. Aumentando as chances das novidades passarem desapercebidas, elas estão misturadas com várias correções de bugs pontuais no changelog de cada release..

Entre as novidades destacamos:

  • Deploy paralelo de contextos, utilizando um thread por aplicação para processar seus respectivos descritores e anotações, reduzindo assim o tempo de inicialização do servidor;
  • Cache dos objetos gerados no processamento dos arquivos de configuração server.xml e context.xml, diminuindo ainda mais o tempo de inicialização;
  • Controle fino de quais atributos da sessão HTTP são replicados (ou não) em cluster, reduzindo o tráfego de rede para sincronização entre os membros;
  • Nova implementação do pool de conexões JDBC, que substitui a implementação original baseada no commons-dbcp e apresenta desempenho sensivelmente melhorado em situações de alta concorrência.

O novo pool de conexões JDBC

Os recursos do novo pool de conexões reforçam a melhor prática de se definir e gerenciar conexões ao banco de dados no servidor de aplicações, em vez de fazê-lo no código da aplicação ou nas configurações de frameworks como Spring e Hibernate. Entre os recursos do novo pool destacam-se:

  • Capacidade de revalidar conexões periodicamente, evitando conexões encerradas unilateralmente por um firewall por estarem inativas (sem tráfego). Quando a aplicação tenta mais tarde usar uma destas conexões, ocorrem erros de rede;
  • Interceptadores (JDBC Interceptors), que trazem funcionalidades como registrar em log comandos SQL lentos e fechar objetos Statement e ResultSet deixados inadvertidamente abertos pela aplicação, evitando vazamentos de recursos no servidor de banco de dados.

Entretanto a implementação default do pool de conexões em um Datasource ainda é a original,baseada no Apache Commons DBCP, de modo que o administrador deve modificar a definição dos seus pools de conexões no server.xml ou no context.xml para tirar proveito do novo pool.

Download e instalação

A nova versão pode ser baixada do site do Tomcat na Apache Foundation. Os downloads em formato zip e tar.gz tem o mesmo conteúdo, incluindo scripts e arquivos bat para rodar o servidor tanto em Linux quanto Windowse Mac. Também há downloads específicos para a instalação do servidor como serviço Windows em 32 ou 64-bits.

O Amazon Elastic BeansTalk já atualizou todas as instâncias para o Tomcat 7.0.27, não sendo necessária nenhuma ação dos usuários do serviço, desde que estas instâncias sejam baseadas nas imagens fornecidas pela própria Amazon.

Usuários interessados em rodar o Tomcat sob o Java 7 devem alterar a configuração de fábrica do servidor para usar o compilador Javac do OpenJDK ou Oracle Java, em vez do ECJ (compilador Java do Eclipse JCP, que vem embutido no Tomcat desde a versão 5.x) para a compilação de páginas JSP.

Já foram iniciados os trabalhos sobre o Tomcat 8, mas ele só deverá ser intensificado quando a especificação da API de Servlets 3.1 (parte do Java EE 7) estiver mais adiantada.

Quem ainda está usando em produção versões anteriores do Tomcat deve se lembrar que em Setembro deste ano será o EoL (End-Of-Life, ou final de vida) da versão 5.5, ainda muito popular nas empresas. Daí em diante não serão oferecidas novas versões e nem correções de bugs para versões do Tomcat anteriores ao 6.0.x. Em dezembro deste ano (2012) os downloads do Tomcat 5.x e 4.x serão removidos da página principal do projeto, e movidos para o arquivo-morto.

Como não é possível atualizar um Tomcat 5.x ou 4.x diretamente para um 6.x ou 7.x, o administrador deve planejar com antecedência a migração para uma versão recente do servidor. Não foi definida ainda uma data para o EoL do Tomcat 6.x e 7.x. Espera-se que ambos sejam suportados ainda por alguns anos.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT