Bonjour,
comme le sujet du topic l'indique, je souhaiterai trouver un lien entre mes EJB (Session) et mes ManagedBean JSF sans utiliser JBoss Seam. Est-ce possible? Et comment?
Merci
Bonjour,
comme le sujet du topic l'indique, je souhaiterai trouver un lien entre mes EJB (Session) et mes ManagedBean JSF sans utiliser JBoss Seam. Est-ce possible? Et comment?
Merci
Bonjour,
Peux-tu développez un peu ?? tu parles de la gestion de la session ?
Je vais essayer....car je suis nouvelle sur ces technologies donc c'est encore un peu vague pour l'instant!
En fait j'ai déjà des entités beans (annotés via JPA) pour la partie persistance de mon application et je cherche un moyen de gérer au mieux les beans sessions (via entity manager) pour que je puisse ensuite utiliser le framework JSF pour réaliser mon interface graphique.
Est-ce assez clair ou tu veux plus de précisions?![]()
Bon j'ai pas tout compris dans ce que tu veux faire avec tes EJB Session .. mais as tu essayé de les déclarer dans le faces-config.xml en tant que managed bean ?
J'ai trouvé quelque chose qui pourrait t'aider :
https://blueprints.dev.java.net/bpca...ejbfacade.html
Regrade plus vers la fin : "Using the Session Bean Facade with Java Server Faces Technology"
Tiens moi au courant !
Je vais essayer d'être plus claire :
En gros, par exemple, j'ai un bean entity Véhicule :
Je réalise ma persistance de chaque bean entité afin de créer ma base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @SuppressWarnings("serial") @Entity // Annotation indiquant que la classe est un entity bean @Table(name="VEHICULE") // Annotation indiquant le nom de la table dans la BDD public class Véhicule implements Serializable{ private String immatriculation; /* getter et setter */ }
Voici le fichier persistance.xml :
Jusqu'ici je n'ai pas de problèmes!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <persistence> <persistence-unit name="optimaunit"> <jta-data-source>java:/DefaultDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="create"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> </properties> </persistence-unit> </persistence>
Mes tables dans ma base de données sont crées.
Maintenant je cherche à coder mes bean session (via entity manager) pour gérer mes entités tout en sachant qu'après je dois utiliser le framework JSF!
Au final j'aurais donc:
pour la partie EJB3
Véhicule.java => bean entity
VéhiculeSession.java => bean session
pour la partie JSF:
VéhiculeManagedBean.java => Backing bean
Véhicule.jsp
Ainsi j'aurai dans mon faces-config:Et moi je cherche donc à trouver le moyen de relier VéhiculeManagedBean à ma partie EJB? En évitant si possible de séparer mes EJB de mon framework JSF (c'est pour ça que je suis réticent à l'idée de mettre mes EJB dans mon managed Bean, mais s'il n'y a pas d'autres solutions....)!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <managed-bean-name>test</managed-bean-name> <managed-bean-class>VéhiculeManagedBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope>
J'espère que c'est un peu plus clair!
Merci de m'aider tout de même![]()
Regarde un peu du coté du lien que je t'ai filé (Using an EJB Session Bean as a Model Facade) ... Ils expliquent comment faire et ça correspond tout à fait à ce que tu veux faire je pense !
Effectivement cela me convient parfaitement...maintenant j'ai juste une petite dernière question, je sais pas si je vais trouver ma réponse sur ce forum, mais je la pose quand même.
Faut-il un EJB Session Bean (=Model facade) pour chaque bean entity (car tous les exemples que je trouve sont pour un seul bean entity!)?
En fait, ça va dépendre de ta façon de voir les choses et de concevoir ton appli ... Je ne pense pas qu'il y a une contrainte technique si tu utilisais une seule facade pour tous les bean entity .. mais je t'avoue que je n'ai encore jamais tester ce que tu fais en ce moement donc je n'ai pas assez de recul pour te conseiller ...
Essayes de voir sur le net, tu trouveras forcément ton bonheur !
utilise l'annotation @EJB dans ton manages bean :
du coté de ton EJB session fait appel à ton entitymanager pour persiste tes EJB3 entities :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @EJB(name = "DalEjbBean/Local") public DalEjbLocal dalEjbLocal; public Personne getDetailPersonne(){ if (detailPersonne == null) {// si nulle, on regare dans le scope params Long personneId = RequestScope.getPersonneId(); detailPersonne = dalEjbLocal.getPersonne(personneId); // APPEL DE L'EJB } return detailPersonne; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @PersistenceContext(name = "djo.mos.legend....ary") public EntityManager em; // public pour les tests /** * Retourne une personne à partir de son identifiant * @param Id PK de la prersonne recherchée * @return La personne ou null */ public Personne getPersonne(final Long id) { if (id == null) { throw new RuntimeException("Identifiant recherché null"); } return em.find(Personne.class, id); }
Partager