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

EntityManager dependency considered not passivation capable (CDI spec violation)

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.5.0, 1.5.1
    • Fix Version/s: 1.5.1
    • 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
      @SessionScoped
      @Stateful
      public class A implements Serializable {

      @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. Try to deploy the application to tomee - observe error message:

      Caused by: org.apache.openejb.OpenEJBRuntimeException: org.apache.webbeans.exception.WebBeansConfigurationException: Passivation capable beans must satisfy passivation capable dependencies. Bean : A, Name:a, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,beans.A], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default,javax.inject.Named] does not satisfy. Details about the Injection-point: Field Injection Point, field name : em, Bean Owner : [A, Name:a, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,beans.A], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default,javax.inject.Named]]
      at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:323)
      at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:150)
      ... 48 more
      Caused by: org.apache.webbeans.exception.WebBeansConfigurationException: Passivation capable beans must satisfy passivation capable dependencies. Bean : A, Name:a, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,beans.A], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default,javax.inject.Named] does not satisfy. Details about the Injection-point: Field Injection Point, field name : em, Bean Owner : [A, Name:a, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,beans.A], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default,javax.inject.Named]]
      at org.apache.webbeans.component.AbstractOwbBean.validatePassivationDependencies(AbstractOwbBean.java:695)
      at org.apache.webbeans.component.AbstractInjectionTargetBean.validatePassivationDependencies(AbstractInjectionTargetBean.java:595)
      at org.apache.openejb.cdi.BeansDeployer.checkPassivationScope(BeansDeployer.java:414)
      at org.apache.openejb.cdi.BeansDeployer.validate(BeansDeployer.java:260)
      at org.apache.openejb.cdi.BeansDeployer.validateInjectionPoints(BeansDeployer.java:222)
      at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:280)
      ... 49 more
      ---------------------------------

      I think this is CDI specification violation - page 3 of CDI specification contains following example:

      @SessionScoped @Model
      public class Login implements Serializable {
      @Inject Credentials credentials;
      @Inject @Users EntityManager userDatabase;
      ...

        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: