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.