IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Lien EJB JSF sans Seam


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Par défaut Lien EJB JSF sans Seam
    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

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Bonjour,

    Peux-tu développez un peu ?? tu parles de la gestion de la session ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Par défaut
    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?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    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 ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    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 !

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Par défaut
    Je vais essayer d'être plus claire :

    En gros, par exemple, j'ai un bean entity Véhicule :
    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 */
     
    }
    Je réalise ma persistance de chaque bean entité afin de créer ma base de données.
    Voici le fichier persistance.xml :
    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>
    Jusqu'ici je n'ai pas de problèmes!
    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:
    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>
    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....)!!

    J'espère que c'est un peu plus clair!

    Merci de m'aider tout de même

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Par défaut
    Citation Envoyé par lucimed Voir le message
    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 !
    Merci je vais regarder ça!

    C'est exactement ce qu'il me faut (à première vue)...maintenant le tout est de comprendre ça

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    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 !

  9. #9
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Par défaut
    Citation Envoyé par lucimed Voir le message
    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!)?

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    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 !

  11. #11
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    utilise l'annotation @EJB dans ton manages bean :
    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;
    	}
    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
    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);
    	}

Discussions similaires

  1. dépolyer une application EJB; JSF sans redémarrer JBOSS
    Par hawaa dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 08/08/2009, 10h16
  2. Problème avec UPDATE EJB + JSF
    Par GeantBioHazard dans le forum JSF
    Réponses: 8
    Dernier message: 19/02/2008, 13h34
  3. [EJB2.1] comment deployer EJB session sans état
    Par Bba_M dans le forum Java EE
    Réponses: 5
    Dernier message: 06/11/2006, 20h28
  4. lien <a href> sans erreur
    Par loady dans le forum Langage
    Réponses: 3
    Dernier message: 12/07/2006, 00h14
  5. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo