Donatas Ciuksys created TOMEE-509:
-------------------------------------

             Summary: Injected extended EntityManager is not registered (cannot 
be used for DB operations)
                 Key: TOMEE-509
                 URL: https://issues.apache.org/jira/browse/TOMEE-509
             Project: TomEE
          Issue Type: Bug
    Affects Versions: 1.5.0
         Environment: Windows 7 x64; jdk1.7.0_09 32 bit; 
apache-tomee-1.5.1-20121026.064316-51-webprofile.zip
            Reporter: Donatas Ciuksys
            Priority: Critical


1. Create class EntityManagerProducer:

@SessionScoped
@Stateful
public class EntityManagerProducer implements Serializable {
    
    @PersistenceContext(type=PersistenceContextType.EXTENDED)
    private EntityManager em;
    
    @Produces
    public EntityManager getEntityManager() {
        return em;
    }
}

2. Create injection client:

@Named
public class A {
    
    @Inject
    private EntityManager em;

    public String getDelegateClassName() {
        return em.getDelegate().getClass().getCanonicalName();
    }
    
}

3. Create JSF page and try to call getDelegateClassName():

    <h:body>
        EntityManager is open: #{a.delegateClassName}
    </h:body>

4. Deploy (successful) and run the application - observe error message (printed 
in browser):

An Error Occurred:
InternalError: an entity manager should already be registered for this extended 
persistence unit

viewId=/index.xhtml
location=D:\dev\proj\templates\InjectionDemo\build\web\index.xhtml
phaseId=RENDER_RESPONSE(6)

Caused by:
java.lang.IllegalStateException - InternalError: an entity manager should 
already be registered for this extended persistence unit
at 
org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:99)

- Stack Trace

java.lang.IllegalStateException: InternalError: an entity manager should 
already be registered for this extended persistence unit
        at 
org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:99)
        at 
org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:80)
        at 
org.apache.openejb.persistence.JtaEntityManager.getDelegate(JtaEntityManager.java:114)
        at 
org.apache.openejb.persistence.JtaEntityManager.getDelegate(JtaEntityManager.java:53)
        at beans.A.getDelegateClassName(A.java:19)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to