Quelles sont les différences entre la Servlet 2.5 et 3?
Je continue J2EE code qui adhère à la Servlet 2.5, et je me demande quelles sont les différences majeures entre 2,5 et 3. Les pointeurs officielles Soleil docs et les expériences personnelles sont les plus appréciés.
Si je ne devrais pas être sujet de moi-même avec 3 pour le moment, juste le dire. Merci!
- +1 un peu d'attente pour les réponses 🙂
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR
Tout comme une mise à jour et pour être plus explicite, voici les principales différences entre les servlets 2,5 et 3 (je ne cherche pas à être exhaustive, je suis juste de mentionner les parties les plus intéressantes):
Annotations de déclarer les servlets, les filtres et les auditeurs (facilité de développement)
Dans les servlets 2.5, pour déclarer une servlet avec un init paramètre, vous devez l'ajouter à web.xml:
Dans les servlets 3, web.xml est facultatif et vous pouvez utiliser les annotations au lieu de XML. Le même exemple:
Pour les filtres, vous devez ajouter ceci dans le web.xml dans les servlets 2.5:
Équivalent à l'aide d'annotations dans les servlets 3:
Pour l'auditeur (dans ce cas, un ServletContextListener), dans les servlets 2.5:
Le même à l'aide d'annotations:
La modularisation de web.xml (Pluggability)
L'enregistrement dynamique des servlets, des filtres et des auditeurs au contexte temps d'initialisation (Pluggability)
Dans les servlets 3, un
ServletContextListener
pouvez ajouter dynamiquement des servlets, des filtres et des auditeurs en utilisant les méthodes suivantes ajouté àSevletContext
:addServlet()
,addFilter()
etaddListener()
Asynchrone soutien
Exemple: dire que certains conteneur de servlet a cinq fils dans son pool de threads, et il y a un processus qui prend du temps à être exécutées par la demande (comme un complexe de requête SQL).
Avec des servlets 2.5 ce conteneur de servlet courir hors de threads disponibles si il reçoit cinq demandes en même temps et les cinq fils de commencer à faire le processus, parce que le fils ne serait pas de retour jusqu'à ce que
service()
(oudoGet()
,doPost()
, etc.) est exécuté du début à la fin et renvoie une réponse.Avec des servlets 3.0, ce processus peut être déléguée à un autre thread et la finition
service()
avant l'envoi de la réponse (la réponse va maintenant être envoyé par le dernier fil). De cette façon, le fil est gratuite pour recevoir de nouvelles réponses.Un exemple de asynchrone support:
Servlets 2.5:
Servlets 3:
L'interface
AsyncContext
a aussi des méthodes pour obtenir l'objet de la requête, la réponse de l'objet et ajouter des listeners pour les informer lorsqu'un processus est terminé.Programmatique de connexion et de déconnexion (améliorations de la sécurité)
Dans les servlets 3, l'interface
HttpServletRequest
a été ajouté deux nouvelles méthodes:login(username, password)
etlogout()
.Pour plus de détails, jetez un oeil à la Java EE 6 API.
@ServletFilter
→@WebFilter
et@WebServletContextListener
→@WebListener
dans les spécifications officielles AFAICT.Servlet 3.0 n'a pas encore été publié, mais il semble que c'est très proche. Les changements les plus importants dans la 3.0 sont: Pluggability, Facilité de développement, Async Servlet, de la Sécurité. Si oui ou non ils sont importants pour vous, c'est impossible pour moi de le dire.
La plus importante est probablement le soutien asynchrone Servlets. Voici un article qui décrit en détail. La spécification complète peut être téléchargée ici.
Comme N'mentionné, les principaux domaines d'améliorations et d'ajouts sont:
Découvrez la Javaone 2008 présentation "Java Servlet API 3.0: Ce qui est nouveau et excitant" pour plus de détails.
Ce lien vous donner assez d'info sur Servlet 3
Servlet 3 prend en charge les annotations pour éliminer
web.xml