Estoy lanzando un código J2EE que se adhiere a Servlet 2.5 y me pregunto cuáles son las principales diferencias entre 2.5 y 3. Se agradecen las sugerencias a los documentos oficiales de Sun y las experiencias personales.
Si no debería preocuparme por 3 por el momento, dígalo. ¡Gracias!
java
servlets
jakarta-ee
Max A.
fuente
fuente
Respuestas:
ACTUALIZAR
Solo como una actualización y para ser más explícito, estas son las principales diferencias entre los servlets 2.5 y 3 (no estoy tratando de ser exhaustivo, solo menciono las partes más interesantes):
Anotaciones para declarar servlets, filtros y oyentes (facilidad de desarrollo)
En servlets 2.5, para declarar un servlet con un parámetro de inicio, debe agregar esto a web.xml :
En los servlets 3, web.xml es opcional y puede utilizar anotaciones en lugar de XML. El mismo ejemplo:
Para los filtros, debe agregar esto en web.xml en servlets 2.5:
Equivalente usando anotaciones en servlets 3:
Para un oyente (en este caso un ServletContextListener), en servlets 2.5:
Lo mismo usando anotaciones:
Modularización de web.xml (conectabilidad)
Registro dinámico de servlets, filtros y oyentes en el momento de la inicialización del contexto (conectabilidad)
En servlets 3, una
ServletContextListener
puede añadir dinámicamente servlets, filtros y oyentes utilizando los siguientes métodos añadido aSevletContext
:addServlet()
,addFilter()
yaddListener()
Soporte asincrónico
Ejemplo: digamos que algún contenedor de servlets tiene cinco subprocesos en su grupo de subprocesos, y hay un proceso que requiere mucho tiempo para ejecutarse por solicitud (como una consulta SQL compleja).
Los servlets 2.5 Este contenedor de servlets se quedaría sin hilos disponibles si recibe cinco solicitudes al mismo tiempo y los cinco hilos disponibles empezar a hacer el proceso, debido a que los hilos no volverían hasta
service()
(odoGet()
,doPost()
, etc.) se ejecuta desde el principio para finalizar y devuelve una respuesta.Con los servlets 3.0, este proceso de larga duración se puede delegar a otro hilo y finalizar
service()
antes de enviar la respuesta (la respuesta ahora será enviada por el último hilo). De esta forma, el hilo es libre de recibir nuevas respuestas.Un ejemplo de soporte asincrónico:
Servlets 2.5:
Servlets 3:
La interfaz
AsyncContext
también tiene métodos para obtener el objeto de solicitud, el objeto de respuesta y agregar oyentes para notificarles cuando un proceso ha finalizado.Inicio y cierre de sesión mediante programación (mejoras de seguridad)
En los servlets 3,
HttpServletRequest
se han agregado dos nuevos métodos a la interfaz :login(username, password)
ylogout()
.Para obtener más detalles, eche un vistazo a la API de Java EE 6 .
fuente
@ServletFilter
→@WebFilter
y@WebServletContextListener
→@WebListener
en especificaciones oficiales AFAICT.Servlet 3.0 aún no se ha lanzado, pero parece que está muy cerca. Los cambios más importantes en 3.0 son: Conectabilidad, Facilidad de desarrollo, Async Servlet, Seguridad. Me es imposible decir si estos son importantes para usted o no.
El más significativo de ellos es probablemente el soporte para servlets asincrónicos. Aquí hay un artículo que describe esto en detalle. La especificación completa se puede descargar aquí .
fuente
Como mencionó Don, las principales áreas de mejoras y adiciones son:
Consulte la presentación de Javaone 2008 " API Java Servlet 3.0: Novedades y novedades " para obtener más detalles.
fuente
Este enlace dará suficiente información sobre Servlet 3
Servlet 3 admite anotaciones para eliminar
web.xml
fuente