inseadima

Bienvenue Invité sur INSEA DIMA.

Actualité de l’ Institut National de Statistique et d'Economie Appliquée {INSEA}.



Rejoignez le forum, c’est rapide et facile

inseadima

Bienvenue Invité sur INSEA DIMA.

Actualité de l’ Institut National de Statistique et d'Economie Appliquée {INSEA}.

inseadima
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
ETB Pokémon Fable Nébuleuse : où acheter le coffret dresseur ...
Voir le deal

un petit cours pour debuter avec JBoss Seam

5 participants

inseadima :: I N S E A :: Options :: Informatique :: Etude :: JAVA & J2EE :: J2EE :: J2EE :: JBoss Seam

Aller en bas

un petit cours pour debuter avec JBoss Seam Empty un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:01

JBoss Seam
1. Introduction
2. Implémentation
   2.1. Avec JBoss Seam
   2.2. Sans JBoss Seam
3. Seam Factory and DataModel
4. Seam Conversation
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:02

1. Introduction
Bien que JSF offre déjà une bonne intégration avec les EJB, quelques aspects ne restent pas très bien mis en place. Java 1.5 à pour but de simplifier le développement et incite a utiliser les annotations dans les classes plutôt que les fichiers de configurations extérieurs qui par la suite deviennent difficiles à exploiter.
Or, quand on essaye d’intégrer les JSF avec les EJB, les développeurs doivent faire face a une configuration difficile et au rajout superflu de ligne de code. Par exemple, JSF demande l’utilisation de Backing Bean qui doivent faire le lien entre les Session Bean et les actions de la page JSF.

C’est pour cela qu’il y eu très vite l’émergence de framework tel que Seam et Shale.

Lorsqu’on lis la description de Seam faite par JBoss, on se rend compte qu’en plus de permettre une intégration plus aisé entre les JSF et les EJB, Seam apporte aussi quelques nouvelles fonctionnalités, tel que l’introduction d’un scope de conversation, ou l’intégration du Business Process Engine Open Source de JBoss appelé jBPM. Seam apporte aussi une meilleure intégration de la technologie AJAX qui est très utilisée dans le développement Web actuel, et offre même ça propre implémentation avec l’AJAX Remoting.

Cette partie a pour but d’introduire comment Seam interagie entre les EJB et les JSF, ainsi que de faire la lumière sur l’utilisation de la conversation et les autres outils cachés.


Dernière édition par le Jeu 19 Avr 2007 - 13:07, édité 1 fois
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:03

2. Implémentation
La façon la plus simple pour comprendre comment Seam interagie entre JSF et EJB ainsi que comment il aide dans leur intégration est de voir comment ça marche avec et sans Seam.


Dernière édition par le Jeu 19 Avr 2007 - 13:07, édité 1 fois
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:04

2.1. Avec JBoss Seam
Pour mettre en place l’interaction entre la page JSF et les différents beans, Seam a introduit une annotation appelé Name.
Chacun des Bean (Entity et Session bean) doivent être marqué par cette annotation et doivent avoir un nom unique sur le system. Ce nom est alors utiliser pour faire appel à ce Bean lorsqu’il en est de rigueur.
Quand une page est chargée, Seam recherche tous les Beans utilisé par cette page et les instancies si ceux là ne le sont pas déjà. C’est comme cela, que les JSF peuvent par la suite faire appel au méthodes et aux attributs des Beans en utilisants les Getters/Setters qui doivent être définis dans l’interface du Session bean.

Quand un Session bean est créé, on peut y déclarer des attributs qui peuvent aussi bien référencer des types primitif que des Entity Beans. Ces attributs récupèrent les valeurs données sur la page JSF en utilisant ce qui s’appelle la Bijection.
Si un attribut est annoté avec @In (Injection), il peut alors récupéré les valeurs entrés dans la page JSF qui lui sont destiné.
Si un attribut est annoté avec @Out(outjection) la valeur donnée a l’attribut dans le Session Bean peut alors être récupéré par la page JSF.

NOTE : Le terms Outjection et Outjecté sont des termes introduis par Seam dans leur documentation. Leur définition de ce terme est que chaque attribut annoté avec @Out peut être exposé a la page en étant Outjecté dans la variable de contexte.

Les annotations de bijection peuvent aussi avoir des paramètres comme le contexte (aussi appelé scope) dans lequel la valeur est injecté ou outjecté. On peut aussi spécifié si la valeur est obligatoire a l’appel du Bean, ou encore si elle doit être créé lors de l’instanciation avec @In(create=true).


Dernière édition par le Jeu 19 Avr 2007 - 13:06, édité 1 fois
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:04

2.2. Sans JBoss Seam
Pour que JSF puisse acceder aux Session Bean sans Seam, ils ont besoin d’utiliser ce qui s’appel des Backing Beans.

Les JSF sont liés a ces Backing Bean en utilisant le fichier de configuration faces-config.xml. Ce fichier doit contenir le nom utiliser pour référencer le Backing Bean, ainsi que le chemin d’accès complet de celui ci (avec le nom du package dans lequel il est).
Le Backing Bean contient la référence du Session Bean que l’on cherche à accéder et en appelera les méthodes demandé. Quand le Backing Beans est initialisé, il doit instancier le Session Bean en utilisant soit l’injection avec l’annotation @EJB, soit en faisant un appel JNDI pour recherché le Session Bean du même nom.
Le backing bean, contient les appels des méthodes du Session Bean. Il doit initialiser chacune des variables qui seront utilisés dans ces méthodes puis faire l’appel du Session Bean avec les valeurs appropriées.

Cela veut dire que chaque Session Bean doit avoir un Backing bean qui instancie le dis Session Bean et initialise toutes les valeurs qui seront utilisées. Tout cela ne reflet en rien ce que Java 1.5 cherche a mettre en place, puisque beaucoup de code superflux doit être implémenter et le fichier de configuration devient très vite dure a déchiffrer.

Seam élimines la distinction entre la couche de présentation et la couche d’accès au donnée et donne un accès direct au Session Bean depuis la page JSF pour qu’ils puissent être utilisé comme listeners.


Dernière édition par le Jeu 19 Avr 2007 - 13:06, édité 1 fois
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:04

3. Seam Factory and DataModel
Une autre façon pour Seam de présenter des données a une page JSF et d’implémenter de l’interaction est d’utiliser le Seam Factory et le DataModel.
L’annotation @DataModel expose une collection à la page JSF et permets a un utilisateur d’interagir avec l’information affichée. La page JSF interprete la collection comme étant un composant et itère pour afficher chaque ligne d’information.

L’annotation @Factory est utilisée pour la première initialisation d’une collection. Quand l’utilisateur accède pour la première fois a une page, la valeur de la collection n’est pas initialisée ce qui peut générer des erreurs. La factory est utilisée pour invoquer la méthode qui est taguée avec l’annotation et qui doit initialiser la collection. Ceci permet a l’utilisateur d’acceder a la page dans n’importe qu’elle circonstance, car la fatory veille à ce que la valeur de la collection soit toujours initialisée.

Ce type d’annotation doit cependant être utilisé dans un Stateful Session Bean avec un scope de Session.
Le type d’objet qui est outjecté a la page dans la collection, doit être connu et définie pour que l’utilisateur puisse par la suite interagir avec les données. Cela est fait grace a l’annotation @DataModelSelection qui prend en paramètre le nom du DataModel auquel il se réfère.
Cette méthode demande aussi l’utilisation du Persistent Context en mode Etendue pour que l’objet séléctionné par l’utilisateur reste dans le context tant que le Stateful bean existe. Tout changement effectué sur l’objet sera alors automatiquement répercuté sur la base de donnée sans le besoin de faire un appel explicite a une méthode de mise a jour.

L’utilisation de la Fatory est très utile pour afficher des données et pour l’interaction avec l’utilisateur, mais si utiliser seul, cela peut causer des problèmes.
En effet Factory vérifie que la collection est bien initialisé lorsque la page est accédée mais ne réinitialise pas la collection si une donnée a été changée. Hors il se peut que les données de la collection soit modifiée a l’extérieur du Session bean.
Pour remédié a ce problème il faut tout simplement que la Factory soit implémenter sur le Getter de la collection. De cette façon, lorsque la page est accéder de nouveau, si la collection n’est pas initialiser, alors Factory se charge de le faire, sinon c’est le getter qui forcera la collection a se faire rafraîchir. Cependant, si la collection est fixe et ne change jamais, alors il est plus intéressant d’implémenter la Factory sur une autre méthode que le Getter, puisque cela sera plus rapide.


Dernière édition par le Jeu 19 Avr 2007 - 13:06, édité 1 fois
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Jeu 19 Avr 2007 - 13:05

4. Seam Conversation
La conversation est un concept déjà bien connu dans le développement J2EE mais JBoss Seam est le premier framework a l’implémenter complètement et qui a en plus créé un scope de Conversation.

Une conversation peut être vue comme un genre de pas-à-pas. C’est une action qui s’étend sur plusieur petites actions et qui permet a l’utilisateur de se promener aisément d’avant en arrière sans se soucier de la perte de ses données, mais sans pour autant les persister dans la base de donnée. Toutes les informations utilisées pendant une conversation sont stockées dans le scope de Conversation.

Par exemple ; une conversation est utilisée pour le booking d’un hotel dans l’ exemple de Seam :


La conversation commence lorsque l’utilisateur choisit un hôtel dans la liste des hôtels proposés. Cette liste a été générée grâce a l’aide de Factory ce qui permet d’avoir toutes les informations sur l’hôtel sélectionné sans faire de nouvel appel a la base de donnée.
L’utilisateur est alors emmené vers une page qui affiche tous les détails connu de l’hôtel. Il peut ici continuer le booking de l’hotel ou bien annulé et revenir a la selection des hôtels. Le lien entre cet utilisateur et l’hotel affiché n’existe que dans le scope de conversation.
Si l’utilisateur choisi de continuer, on lui demande alors de rentré les informations necessaires au booking comme les dates de séjour, le numéro de carte bleu..
La page suivante montre toutes les informations du booking. Il n’y a là encore aucune donnée de persistée dans la base. Tout n’existe que dans le scope de conversation. L’utilisateur peut choisir de revenir en arrière et retrouvera les champs remplis avec les informations qu’il avait mis auparavant.
Les données ne sont persistées dans la base que l’or de l’action final de l’utilisateur qui confirme ainsi le booking de l’hotel.

Lorsque la conversation est terminée, le scope de conversation est détruit ainsi que toutes les données qui s’y trouve.
Cette méthode permet de sauver énormément de temps et de code a l’implémentation. Aucun appel de base de donnée n’est besoin, et tout se gère parfaitement, sans aucun besoin d’intervention. Il faut juste avoir annoté les bon attributs avec les annotations de bijections adéquates.

Une conversation commence avec une méthode annoté de @Begin ou bien avec un élément de type qui a une propagation a begin.
Une conversation se termine quand elle atteind une methode annoté de @End ou bien lorsque l’utilisateur clique sur un lien avec une propagation à end.

NOTE : Les éléments sont des éléments appartenant a Seam et qui sont inclus dans la page JSF. Ces éléments peuvent être représenté sous la forme de boutons ou le liens sur la page web et sont utilisés spécialement pour limiter le domaine de propagation d’une conversation d’une page a l’autre.

Je vous invite a lire le Tutorial de Seam dont l’adresse est fourni dans la bibliographie pour de plus amples information sur tout ce que Seam peut faire.
Un livre sortira aussi au mois de Décembre.
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par a.elghachi Lun 23 Avr 2007 - 3:30

oooh trop fort notre ami abdellah, il a ecrit un cours sur JBoss Seam, j savais pas que tu es un bon ecrivant, comme sa on a un serge tahi a l INSEA. CoOoOol Wink
a.elghachi
a.elghachi
membre
membre

Masculin
Nombre de messages : 39
Localisation : Casa
Date d'inscription : 25/10/2006

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par a.elghachi Lun 23 Avr 2007 - 3:31

Merci brother abdellah c interessant Smile
a.elghachi
a.elghachi
membre
membre

Masculin
Nombre de messages : 39
Localisation : Casa
Date d'inscription : 25/10/2006

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par ibn_adam Lun 23 Avr 2007 - 16:44

salam,study

je viens de lire ces excellents tutos, rien à dire.
on voit bien que tu porte un interet aux nouvelles technos A al elghachi Very Happy .

bon, j ai une petite question.
Seam est un bon framework ....
toutefois en l'adoptant on melange le metier avec la presentation.
dans le code de notre entiy ,session,ou un javabeans (pojo)
on retrouve le code (return ...) de gestion de la presentation.
ceci n'est -il pas dangereux si on veut utiliser les services de nos classes metiers (ejb,...) pour un nouveau client (swing,pda,..),
de plus seam ne supporte pour la vue à ce moment que jsf ,

ou bien pour elargir le domaine d'action de notre application ?
l'utilisation de seam dans les petits projets est interessent (l'outil seam gen est tres puissant) mais dans les grands projets je pense qu'il faudra une expertise avant de se lancer (c juste mon avis personnel ,seam est sorti en 2005 mais on a pas de reels retours d'experiences,pas beaucoup de livres on a affaire qu'aux guides proposés par jboss).

backing beans ont leurs mot à dire.
avatar
ibn_adam
Modérateur
Modérateur

Masculin
Nombre de messages : 32
Date d'inscription : 31/10/2006

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Mer 25 Avr 2007 - 4:46

hehe
j vien de lire le message d adil
merci pr le complement mais dsl de te decevoir hehe
chui pas l'auteur de ce cours ( evidament )
c que du copier-coller
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par a.elghachi Mer 25 Avr 2007 - 5:59

oui je sais que du copier coller, mais serge tahi a aussi comence par du copier coller, alors ne perd pas l espoir amigos Wink
on compte sur twa Very Happy
@+++
a.elghachi
a.elghachi
membre
membre

Masculin
Nombre de messages : 39
Localisation : Casa
Date d'inscription : 25/10/2006

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par HADLI.Abdellah Mer 25 Avr 2007 - 6:04

ok
j ferais d mon mieu ;-)

le prochain cours portera peut etre sur les bases de données xml
hehe
HADLI.Abdellah
HADLI.Abdellah
Co-Admin
Co-Admin

Masculin
Nombre de messages : 132
Localisation : casablanca
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par s.souhail Mer 25 Avr 2007 - 7:24

bonne continuation mon pote,
j'ai crer cette rubrique q pr JBoss seam
king

Tbark allah 3lik aba lhadlix lol!
s.souhail
s.souhail
Administrateur
Administrateur

Masculin
Nombre de messages : 1053
Localisation : Île-de-France (Nanterre)
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par a.Elkamhouri Lun 14 Avr 2008 - 5:44

salam

j'aimerais bien savoir votre concernant l'IDE (eclipse, netbeans,...) le mieux adapté pour travailler avec JBoss Seam????

deuxièment, j'ai besoin de l'aide (documents, exemples, liens...) pour developper une application utilisant JBoss Seam (EJB3 + JSF)

10x
a.Elkamhouri
a.Elkamhouri
Modérateur
Modérateur

Masculin
Nombre de messages : 53
Localisation : Salé
Date d'inscription : 13/01/2007

Revenir en haut Aller en bas

un petit cours pour debuter avec JBoss Seam Empty Re: un petit cours pour debuter avec JBoss Seam

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

inseadima :: I N S E A :: Options :: Informatique :: Etude :: JAVA & J2EE :: J2EE :: J2EE :: JBoss Seam

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum