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

Java EE Discussion :

Ecriture en cache des EJB CMP


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Points : 53
    Points
    53
    Par défaut Ecriture en cache des EJB CMP
    Bonjour à tous,

    j'ai un petit probleme de mise en pratique des EJB CMP.
    le probleme est assez simple, j'ai deux EJB Stateless (EJB1 et EJB2) qui accèdent à un EJB Session Facade d'un EJB CMP.

    EJB1 (qui est lancé comme un Thread) crée un objet CMP mais le em.persist() ne le crée que dans le cache (pas d'écriture dans la base, juste en mémoire), un em.find confirme bien que l'enregistrement a été effectué. l'EJB1 continue son traitement.

    lorsque l'EJB2 est lancé alors que l'EJB1 est toujours en exécution et accède à la base, il ne voit pas l'enregistrement précédemment créé par l'EJB1...

    donc ma question est:
    - comment commiter l'écriture de mon EJB1 en base afin que l'EJB2 puisse voir ce nouvel enregistrement ?

    J'ai tenté d'utiliser une transaction dans mon EJB1 mais j'ai une erreur au lancement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EntityTransaction tx = em.getTransaction();
    tx.begin(); 
    em.persist(Object);
    tx.commit();
    java.lang.IllegalStateException: Illegal to call this method
    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    em.persist(Object);
    display();
    l'objet est bien dans le cache mais je ne peux pas commiter l'écriture.

    Qu'en pensez vous ?
    Merci,

    Tiamat.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Points : 53
    Points
    53
    Par défaut
    Juste pour info, voici le persistence.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       <persistence-unit name="KeepAliveModule">
           <jta-data-source>java:/MySqlDS</jta-data-source>
           <provider>org.hibernate.ejb.HibernatePersistence</provider>
           <class>com.prj.entities.KeepAliveModule</class>
           <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
                <property name="hibernate.hbm2ddl.auto" value="update"/>
           </properties>
       </persistence-unit>
    Connaissiez vous un moyen de désactiver le cache pour cet objet soit depuis le persistence.xml soit dans la déclaration de l'entityManager ?

    Merci,
    Tiamat.

Discussions similaires

  1. [EJB3.1] Les mécanismes cachés des @ejb et @Scoped
    Par geforce dans le forum Java EE
    Réponses: 0
    Dernier message: 09/03/2012, 10h25
  2. [EJB] [Débutant] Portabilité des EJB
    Par ruff15 dans le forum Java EE
    Réponses: 7
    Dernier message: 23/01/2008, 17h47
  3. Compiler, Déployer des EJB avec ANT ?
    Par Johnbob dans le forum ANT
    Réponses: 3
    Dernier message: 28/09/2004, 16h04
  4. [eclipse3.0][Lomboz]Generation d'ejb CMP bizare
    Par crapboulba dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/07/2004, 12h06
  5. [JONAS][EJB]erreur sur la construction des EJB
    Par silvermoon dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/06/2004, 18h53

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