Actualités

[21/07/2017] Smile lance les premiers vélos solaires connectés à l’occasion du Sun Trip Tour 2017

Smile, leader des solutions IoT et open source, confirme sa solide expertise sur le marché de l’embarqué en participant activement à la course de vélos solaires du Sun Trip Tour.

[03/07/2017] Smile remporte le Drupagora d'Or 2017 du meilleur site e-commerce

Le vendredi 30 juin, la 3ème édition des Drupagora d'Or s'est déroulée à Paris.

[30/06/2017] Découvrez les projets de nos équipes au Hackathon Data Énergie

Les 29 et 30 juin, le Hackathon Data Énergie s'est déroulé au Liberté Living Lab à Paris.

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

JSR 315 - Java Servlet 3.0

Cette nouvelle spécification[1], intégrée à JEE6, est en version finale depuis décembre 2009. Elle introduit un bon nombre d'améliorations et de nouveautés.

Modularité et annotation

Une des nouveautés est l'introduction d'une modularité via les web-fragment. Un web-fragement.xml est une partie de fichier web.xml, placé dans le répertoire META-INF des jar de la webapp. Les web-fragment permettent de déclarer les mêmes informations que dans le web.xml. Les fichiers web-fragment.xml et web.xml sont combinés par le conteneur de servlet au déploiement de l'application, il est possible de définir les préférences d'assemblage (ordre absolue, ordre relatif)

A la mode, les annotations font leur apparition pour configurer l'application web :
- @WebServlet pour les Servlet
- @WebFilter pour les Filter
- @WebListener les listeners
- @ServletSecurity pour définir les éléments de securité (equivalent de security-constraint du web.xml)

Exemple de code pour définir une servlet :

@WebServlet(name=”MySampleServlet”, urlPatterns={"/myservlet", "/m"})
 public class SampleServlet extends HttpServlet{
   public void doGet(HttpServletRequest req, HttpServletResponse res) {
    }
 }

A noter, que pour spécifier l'ordre des éléments (filtre, servlet), il est nécessaire de passer par le descripteur de déploiement web.xml ou web-fragment.xml

Enfin, une api permet de déclarer les éléments par programmation. Par exemple, l'ajout d'un filtre peut se faire de cette manière :

Filter filter = new fr.smile.MyFilter();
 ...
 context.addFilter("myfilter", filter);

Ressources statiques dans les jars

Servlet 3.0 introduit le chargement de ressources statiques dans les jar. Les fichiers JSP, css, js, ... placés dans le répertoire META-INF/resources des jar sont disponibles comme s'ils étaient placés à la racine de la webapp.

Upload de fichier

L'annotation @MultipartConfig permet d'annoter les servlet qui vont traiter les requêtes multipart/form-data, c'est à dire l'upload de fichiers. L'upload de fichier devient donc natif avec servlet 3.0 !

Traitement asynchrone

Sans aucune doute la nouveauté la plus notable, servlet 3.0 introduit le traitement asynchrone des requêtes. Jusqu'à servlet 2.5, les requêtes étaient traitées de manière synchrone, c'est à dire que le thread traitant la requête était bloqué jusqu'à la fin du traitement de la servlet. Il était alors complexe et couteux en performance de gérer les requêtes longues durée. Avec la gestion asynchrone, les threads ne sont plus bloqués et peuvent donc traiter d'autres requêtes sans attendre la réponse de la servlet. Cela permet de gérer le cas de traitement long, mais surtout de gérer la programmation de type server-push, alias Comet[2], de manière standard. Ce type de programmation est utilisé ans les applications affichant des données qui évoluent rapidement (chat, indices boursier, monitoring, news …).

Implémentations

L'implémentation de référence est glassfish v3.0, sortie en debut d'année et telechargeable sur le site glassfish.dev.java.net [3].
Pour les autres serveurs d'applications, il faudra attendre Tomcat 7 et Jetty 8. Même si aucune date officielle n'est donnée, ces 2 versions devraient être disponible en version stable d'ici la fin du premier trismestre 2010.

Conclusion

La plupart des nouveautés de servlet 3.0, mise à part le traitement asynchrone, ne vont pas directement modifier notre facon de travailler. En effet, avec les frameworks utilisés pour développer nos applications, nous écrivons très peu de servlet ou de filter. L'interet de servlet 3.0 sera de pouvoir charger un framework en ajoutant uniquement le jar dans notre application, sans configuration du web.xml.

[1] http://jcp.org/aboutJava/communityprocess/final/jsr315/index.html
[2] http://en.wikipedia.org/wiki/Comet_(programming)
[3] https://glassfish.dev.java.net/downloads/v3-final.html

Alexis Thaveau
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire