Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Not A Problem
-
1.5.0, 1.5.1
-
None
-
None
-
None
-
Windows 7 x64; jdk1.7.0_09 32 bit; apache-tomee-1.5.1-20121026.064316-51-webprofile.zip
Description
1. Create class EntityManagerProducer:
@SessionScoped
@Stateful
public class EntityManagerProducer implements Serializable {
@PersistenceContext(type=PersistenceContextType.EXTENDED)
private EntityManager em;
@Produces
public EntityManager getEntityManager()
}
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: #
</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)
...