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 :

JPA dans un EJB


Sujet :

Java EE

  1. #1
    Membre régulier Avatar de balmeyer
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 79
    Points
    79
    Par défaut JPA dans un EJB
    Est-il possible d'utiliser la persistence à l'interieur d'un EJB ?

    Je fais un test avec cette méthode, dans l'implémentation de mon EJB :

    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
    18
    19
    20
    21
    22
    23
     
     
        @PersistenceContext(name="EJBAdditionPU")
        private EntityManager em;
     
        @Resource
        private UserTransaction trans;
     
    ......
     
        public void save(Object o) {
     
     
            try {
                trans.begin();
                em.persist(o);
                trans.commit();
            }catch (Exception ex){
                //trans.rollback();
                ex.printStackTrace();
            }
     
        }

    Mais j'obtiens toujours une erreur de type :

    java.lang.IllegalStateException: Operation not allowed.
    at com.sun.enterprise.distributedtx.UserTransactionImpl.checkUserTransactionMethodAccess(UserTransactionImpl.java:112)
    at com.sun.enterprise.distributedtx.UserTransactionImpl.begin(UserTransactionImpl.java:131)


    lorsque j'effectue le "trans.begin()" sur mon objet UserTransaction....

    Savez-vous d'où cela vient ?

    Cela marche bien dans le cadre d'une simple application web sur glassfish, avec injection par l'annotation @PersistenceContext.

  2. #2
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    les méthodes des EJB sont par défaut CMT (container managed transactions). Pas besoin de manipuler un contexte de transaction.

  3. #3
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Tu ne peux pas faire du CMT dans des entity beans, donc tu oublies UserTransaction dans ton cas.
    Si tu veux savoir pourquoi ... poses-moi la question

Discussions similaires

  1. Import d'un projet JPA dans un projet EJB
    Par jecomprendsrien dans le forum Maven
    Réponses: 0
    Dernier message: 10/10/2011, 19h27
  2. [EJB Session] Méthode static dans un EJB ?
    Par KooKoolen dans le forum Java EE
    Réponses: 4
    Dernier message: 13/12/2006, 11h17
  3. JPA dans netbeans
    Par zalalus dans le forum NetBeans
    Réponses: 2
    Dernier message: 14/11/2006, 10h44
  4. [EJBQL] Récupérer une donnée dans un EJB avec EJB/QL
    Par pblb62 dans le forum Java EE
    Réponses: 3
    Dernier message: 28/03/2006, 11h53

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