Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

OpenSource Exchange : compte-rendu sur Portlets 2.0

Portlets 2.0

Présentation réalisée par Christophe Laprun, développeur chez JBoss.

Historique : les Portlets 1.0

Les Portlets 1.0 sont définis par la JSR 168, publiée en 2003 mais non intégrée dans la norme J2EE.
Cette technologie permet d'intégrer dans un même écran (le "portail") différentes applications d'entreprise, de manière à unifier leur mode d'accès, la gestion de leurs droits, leur apparence visuelle...

Les Portlets se développement d'une manière très similaire aux Servlets. Ce sont des classes implémentant l'interface javax.portlet.Portlet, déclarées dans le descripteur /WEB-INF/portlet.xml et déployées dans des archives war standard. Leur traitement des requêtes est en revanche décomposé en une phase de calcul ("processAction()") et une phase de rendu ("render()"), car au sein du portail l'utilisateur peut agir sur leur apparence (les minimiser / maximiser, déplacer...) sans pour autant leur envoyer une requête de traitement. Enfin, les portlets ont accès chacune à sa propre session, ainsi qu'à une session globale leur permettant de partager des informations.

Cette première version possédait pourtant beaucoup de limitations :

  • Les APIs de communication inter-portlets n'étant pas standardisées, les APIs propriétaires se sont multipliées, liant les portlets à des portails spécifiques.
  • De plus, les portlets souhaitant communiquer devaient être déployées au sein d'un même war.
  • Le support d'Ajax était difficile et limité.
  • Les ressources statiques (images, etc.) étaient accédées directement par le serveur et non pas via des portlets.
  • Il était difficile de communiquer avec des applications non-portlets.

C'est pour répondre à ces problèmes que la JSR 286, Portlets 2.0, a vu le jour en juin 2008.

Présentation des Portlets 2.0

Tout d'abord, il faut savoir que les portlets développées selon la version 1.0 de la spécification sont réutilisables sur les serveurs certifiés Portlets 2.0.

Les principales nouveautés sont :

  • Les Public Render Parameters (PRP) : un ensemble de paramètres de rendu partagés entre les portlets. Ils fournissent un mécanisme de coordination basique entre les portlets, qui n'ont alors plus besoin d'être déployés dans une même archive. Ils ne doivent en revanche pas être utilisés pour transmettre des informations métier entre les portlets.
  • Un modèle événementiel asynchrone. Les portlets implémentant javax.portlet.EventPorlet sont capables de réagir à la réception d'événements via leur méthode "processEvent()". Ce système permet d'échanger des données métier entre les portlets et avec des applications externes. Ce système possède toutefois des limitations : la remise des messages n'est pas assurée, et il faut faire attention à ne pas provoquer des boucles de messages infinies...
  • Les ResourceServingPortlet, qui se comportent comme des proxies permettant d'accéder à des ressources hors portail.
  • Les filtres de portlets (PortletFilter), équivalents aux ServletFilters.

Pour finir, les annotations se sont là encore invitées dans les APIs, et permettent de modifier les méthodes appelées pour traiter les événements, le rendu, etc.

Une petite démonstration nous a été faite du mécanisme de communication inter-portlets : une portlet permettait de saisir un code postal, pendant que deux autres affichaient respectivement la météo locale et une carte Google Maps de la région. A la saisie d'un nouveau code postal, la carte et la météo étaient mises à jour.

Conclusion

Beaucoup de nouveautés pour cette version 2.0, et surtout un effort visible de standardisation, dans l'espoir de rendre les portlets des différents vendeurs compatibles entre elles.

J'ai trouvé intéressante la présentation de ces nouveautés, mais je peine toujours à apprécier cette technologie à sa juste valeur... La démonstration de la plateforme Exo ne m'avait pas convaincu non plus.
Par contre, était-ce le sujet, le ton du présentateur, la fin de la digestion ou la fatigue après 6 séances, mais j'avoue m'être profondément ennuyé et presque assoupi pendant cette présentation ; et un rapide tour de salle m'a permis de constater que j'étais loin d'être le seul dans ce cas. Il faudra penser à rendre tout cela plus dynamique la prochaine fois !


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.