Estou lançando o código J2EE que segue o Servlet 2.5 e estou me perguntando quais são as principais diferenças entre 2.5 e 3. Dicas para documentos oficiais da Sun e experiências pessoais são mais apreciadas.
Se eu não deveria estar me preocupando com o 3 por enquanto, apenas diga. Obrigado!
java
servlets
jakarta-ee
Max A.
fonte
fonte
Respostas:
ATUALIZAR
Apenas como uma atualização e para ser mais explícito, essas são as principais diferenças entre os servlets 2.5 e 3 (não estou tentando ser exaustivo, estou apenas mencionando as partes mais interessantes):
Anotações para declarar servlets, filtros e ouvintes (facilidade de desenvolvimento)
Em servlets 2.5, para declarar um servlet com um parâmetro init, você precisa adicioná-lo ao web.xml :
Nos servlets 3, web.xml é opcional e você pode usar anotações em vez de XML. O mesmo exemplo:
Para filtros, você precisa adicionar isso em web.xml em servlets 2.5:
Equivalente usando anotações em servlets 3:
Para um ouvinte (neste caso, um ServletContextListener), nos servlets 2.5:
O mesmo usando anotações:
Modularização de web.xml (plugabilidade)
Registro dinâmico de servlets, filtros e ouvintes no momento da inicialização do contexto (plugabilidade)
Em servlets 3, um
ServletContextListener
pode adicionar dinamicamente servlets, filtros e ouvintes usando os seguintes métodos adicionais paraSevletContext
:addServlet()
,addFilter()
eaddListener()
Suporte assíncrono
Exemplo: digamos que algum contêiner de servlet tenha cinco threads em seu pool de threads e haja um processo demorado a ser executado por solicitação (como uma consulta SQL complexa).
Com servlets 2,5 este servlet container iria ficar sem threads disponíveis se ele recebe cinco pedidos ao mesmo tempo e os cinco tópicos disponíveis começar a fazer o processo, pois os fios não retornaria até
service()
(oudoGet()
,doPost()
etc.) é executado do início para terminar e retorna uma resposta.Com os servlets 3.0, esse processo longo pode ser delegado a outro encadeamento e terminar
service()
antes de enviar a resposta (a resposta agora será enviada pelo encadeamento mais recente). Desta forma, o tópico fica livre para receber novas respostas.Um exemplo de suporte assíncrono:
Servlets 2.5:
Servlets 3:
A interface
AsyncContext
também possui métodos para obter o objeto de solicitação, objeto de resposta e adicionar ouvintes para notificá-los quando um processo foi concluído.Login e logout programáticos (melhorias de segurança)
Nos servlets 3, a interface
HttpServletRequest
foi adicionada a dois novos métodos:login(username, password)
elogout()
.Para obter mais detalhes, dê uma olhada na API Java EE 6 .
fonte
@ServletFilter
→@WebFilter
e@WebServletContextListener
→@WebListener
nas especificações oficiais AFAICT.O Servlet 3.0 ainda não foi lançado, mas parece que está muito próximo. As mudanças mais importantes no 3.0 são: Pluggability, Facilidade de desenvolvimento, Async Servlet, Segurança. Se isso é importante ou não para você, é impossível dizer.
O mais significativo deles é provavelmente o suporte para Servlets assíncronos. Aqui está um artigo que descreve isso em detalhes. A especificação completa pode ser baixada aqui .
fonte
Como Don mencionou, as principais áreas de melhorias e adições são:
Confira a apresentação do Javaone 2008 " Java Servlet 3.0 API: Novidades e empolgantes " para obter detalhes.
fonte
Este link fornecerá informações suficientes sobre o Servlet 3
Servlet 3 suporta anotação para eliminar
web.xml
fonte