-
Seam
Unification de Java EE
Une application multi-tiers est donc typiquement fabriquée à partir d’un ensemble de composants : Services Transactionnels, services de sécurités, Persistance des données, envoi de messages Asynchrone, composant d’interfaces graphique etc …
Parmi eux on l’a vu, on peut citer surtout EJB3, JPA (via Hibernate), JSF,EL, JMS, JAAS, iText, Groovy, JBoss Rules, Ajax .. etc
Vous connaissez tous une partie ou l’essentiel de ces technologies, au moins de nom.
Néanmoins, le problème qui revient de manière récurrente lorsqu’on entame un projet autour de ces spécifications est tout d’abord : que choisir parmi la quantité invraisemblable de technologies de Java EE ?Ensuite il faut limiter les choix car l’intégration et la communication des différents aspects technologiques au sein du projet peut vite devenir très voir trop complexe.
L’intégration est donc l’un des problèmes les plus ardus dans le développement d’application d’entreprises.
En effet, tout d’abord la configuration du projet intégrant ces spécifications est souvent laborieuse et longue.
Néanmoins de projets en projets on refait encore et toujours ces même étapes.Seam est une solution à cette problématique.
Seam est d’abord parti du principe que la spécification java EE 5 incorpore deux composants d’architecture qui sont des clefs pour créer des applications web : JSF et EJB3.
JSF est le standard de JEE5 pour la couche présentation qui fournit à la fois l’interface utilisateur, modèle de composant et gestion événementielle coté serveur.
EJB3 est le standard de modèle de composant pour créer des composants métiers sécurisés et évolutifs , qui accèdent aux ressources de manière transactionnelle.
Mais EJB3 englobe aussi Java Persistance API qui définit un standard de modèle de persistance pour faire le mapping objet relationnel.Néanmoins les deux architectures ont un soucis, elles nécessitent des intermédiaires pour communiquer, un code qui va servir à les assembler (les coller) autant d’un coté configuration XML que code Java (les backing beans JSF).
La connexion des EJB aux pages JSF est tout à fait faisable mais sous certains aspects, trop complexe.
Seam a pris en charge cette responsabilité et permet à JSF et EJB3 de fonctionner enfin directement ensemble.
En partie grâce à cela, Seam s’est positionné lui même comme un prototype de la future spécification java EE 6.
Trois JSR ( JSR = Java Specification Request) importantes ont été acceptées :
JSR 299 les Web Beans dont le but est d’unifier les managed bean de JSF avec le modèle de composant EJB.
JSR 314 JSF 2.0
JSR 303 : Bean Validations.Cependant ne soyez pas inquiet d’une éventuelle limitation : Seam ne va pas vous rendre complètement dépendant d’EJB et de JSF.
En effet coté vu vous pourrez changer alternativement pour Wicket, Tapestry, GWT ou Flex et autres à la place de JSF.
Et coté métier Seam permet le support des JavaBeans comme composants transactionnels et de plus l’intégration du conteneur de Spring est tout à fait possible, et ce toujours dans cette volonté de simplicité d’intégration et de configuration.Vous devez voir le but de Seam comme celui de fournir au développeur une seule source de technologies.
L’idée initial de Gaving King, créateur d’Hibernate et de Seam, était de mettre en place une fondation qui autoriserait le contexte de persistance ( Session Hibernate ou EntityManager de JPA) à traverser les couches et autoriserait les EJB Stateful à répondre directement aux composants d’interface JSF.
Pour supporter cette vision, Seam encourage donc l’adoption d’une architecture Stateful pour gérer la continuité des interactions utilisateurs ou événementielles.Le nom Seam (couture en français) a été choisi pour le projet car il apporte une fondation qui intègre JSF et EJB 3 ensembles et assemblés, et leur permet de communiquer simplement dans le même conteneur.
Dans le processus de résolution des problèmes entre JSF et EJB3, les architectes de Seam ont inclus la possibilité d’inclure les POJO comme des composant métiers, et de ne pas se limiter aux EJB.
Les composants Seam sont donc des POJO simplement enrichis d’une annotation simple et intègrent des services implicites ou déclarés communs aux EJB tels que les transaction, les intercepteurs, la gestion des threads et de la sécurité.
Pour les composants non EJB (pojo, javabeans, springs beans), Seam se charge de traiter les annotations Java EE 5 ou leurs synonymes de l’api Seam en les redirigeants sur les services auto gérés, grâce à ses propres surcharges.Seam est aussi parti du principe de réduire voir de supprimer la configuration XML longue, difficile à relire et récurrente aux applications JEE utilisant JSF et EJB3, et tant qu’à faire ils l’ont fait pour l’ensemble des éléments intégrés au framework.
Tout cela vous permet entre autre de reconsidérer votre choix d’utiliser les EJB si vous n’avez pas particulièrement besoin de toute leur possibilités, en effet vous n’êtes pas obligé d’utiliser JBoss Application Server pour déployer une application Seam en dépit de ce que vous pourriez avoir entendu.
En effet bien que la documentation de Seam recommande l’utilisation de JBoss (n’oublions pas que Seam est soutenu par JBoss), Seam est peut être le framework respectant le plus java EE 5 et de ce fait il est compatible avec de nombreux serveurs d’applications.
- Weblogic,
- WebSphere,
- OC4J,
- Tomcat (si vous n’utilisez pas EJB)
- Glassfish
Voici un petit listing des améliorations apportées par Seam à la plateforme Java EE 5 :
- Eliminer les lacunes de JSF qui ont fait l’objet d’innombrables débats.
- Permettre la communication entre JSF et les composant métiers transactionnels
- Supprimer les couches non nécessaires.
- Offrir une solution pour une gestion d’état contextuelle, décourageant l’utilisation d’une architecture Stateless.
- Gérer le contexte de persistance (Session Hibernate ou EntityManager de JPA) pour prévenir les Exceptions de Lazy initialisation dans la vue et les requêtes en descendant.
- Fournir un moyen d’étendre le contexte de persistance à la durée d’un cas d’utilisation.
- Connecter les vues aux pages flows stateful.
- Apporter la gestion des processus métiers au monde des applications web
- Connecter aux POJO les mécanismes d’authentification et d’autorisation gérés par JAAS, accessible via les EL et pouvant être étendues en utilisants des règles déclaratives.
- Fournir un conteneur d’EJB embarqué pour réaliser des tests dans un environnement non JEE.
- Fournir plus de 30 exemples de références dans la version fournie du framework.
Pour plus d’informations je vous laisse découvrir les tutoriaux qui vous permettront de voir certaines des facilités apportées par Seam



