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 :

Problème avec JSF et SessionBean


Sujet :

JSF Java

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Par défaut Problème avec JSF et SessionBean
    Bonjour,
    J'utilise une simple application de CRUD JSF (JSF pages from entities) avec comme serveur GlassFish3 et avec le Framework JavaServer Faces.

    Supposons que je dispose de deux tables, T1 et T2.
    Dans le forumulaire Create de T1, lorsque j'appuie sur le lien d'envoie, la méthode déclenchée de T1Controller.java est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public String create() {
            try {
                getFacade().create(current);
                JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("T1Created"));
                return prepareCreate();
            } catch (Exception e) {
                JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
                return null;
            }
        }
    Mais dans me cas, je veux effectuer une requete sur la deuxième table T2.
    A cette méthode create(), j'ai ajouté le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UserTransaction tx = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
                    try {
                    tx.begin();
                    EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.project");
                    EntityManager em = emf.createEntityManager();
                    em.merge(t2);
                    tx.commit();
                    }
                    catch (RuntimeException e) {
                        tx.rollback();
                    }
    Ce code effectue la requete de MAJ sur la table mysql T2, mais lorsque je consulte la page View de T2, seule les valeurs initiales sont affichées. Il faut redéployer le projet pour avoir les valeurs exactes.

    Je crois qu'ils s'agit d'un problème de Session.

    NB : T1Controller.java a l'annotation @SessionScoped

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Salut,

    C'est un problème de synchronisation de cache de l'EntityManagerFactory.

    Ce qu'il y a c'est que le code que tu as ajouté à ta méthode create() de T1Controller.java crée un deuxième EntityManagerFactory différent de celui qui est utilisé dans getFacade().create(current).
    D'ailleurs, peut-on voir le code de cette Façade?

    En tout cas, étant donné que tu as maintenant deux EntityManagerFactory, l'un ne synchronise pas son cache avec les changements effectués dans l'autre parce qu'il ne les "voit" pas. Et si tu utilise le premier pour "consulte[r] la page View de T2", tu ne verras pas les changements alors que la base de données a été modifiée.

    Etant donné que tu es en environnement géré par le container, le mieux c'est d'ajouter ton code dans celui de la façade (j'imagine que c'est un EJB ou autre CDI bean) pour réutiliser le même EntityManager qui y est injecté, ou un autre obtenu à partir du même factory.

Discussions similaires

  1. problème avec jsf et jaas
    Par ahmed.normal.tn dans le forum JSF
    Réponses: 7
    Dernier message: 04/10/2009, 15h43
  2. Problème avec jsf+confirmation de suppression
    Par jdev23 dans le forum JSF
    Réponses: 2
    Dernier message: 21/08/2008, 21h12
  3. Problème avec JSF et le fichier properties
    Par jeedev dans le forum JSF
    Réponses: 3
    Dernier message: 11/08/2008, 08h46
  4. Réponses: 3
    Dernier message: 12/02/2008, 16h19
  5. Problème avec JSF 1.2 + JBoss 4.2.2.GA
    Par sofien dans le forum JSF
    Réponses: 20
    Dernier message: 12/02/2008, 08h51

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