Uploaded image for project: 'TomEE'
  1. TomEE
  2. TOMEE-509

Injected extended EntityManager is not registered (cannot be used for DB operations)

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Not A Problem
    • Affects Version/s: 1.5.0, 1.5.1
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      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()

      { 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)
      ...

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              donatasc Donatas Ciuksys
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: