[weld-issues] [JBoss JIRA] Created: (CDITCK-80) Issue surrounding Bean.destroy() behavior

Vivek Pandey (JIRA) jira-events at lists.jboss.org
Wed Nov 25 11:39:32 EST 2009


Issue surrounding Bean.destroy() behavior
-----------------------------------------

                 Key: CDITCK-80
                 URL: https://jira.jboss.org/jira/browse/CDITCK-80
             Project: CDI TCK
          Issue Type: CTS Challenge
      Security Level: Public (Everyone can see)
    Affects Versions: 1.0.1.CR1
         Environment: jdk6 u15, glassfish v3
            Reporter: Vivek Pandey


org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextDesctructionTest seems to be invalid or jsr299 7.3.6 needs to clarify. Read below:

Sec 7.3.6 Lifecycle of resources of JSR299 layout this asseertion:

"When the create() method of a Bean object that represents a resource is called, the container creates and returns a con- tainer-specific internal reference to the Java EE component environment resource, entity manager, entity manager factory, remote EJB instance or web service reference. This reference is not directly exposed to the application.
Before injecting or returning a contextual instance to the application, the container transforms its internal reference into an object that implements the bean types expected by the application and delegates method invocations to the underlying re- source, entity manager, entity manager factory, remote EJB instance or web service reference. This object must be passiva- tion capable.

When the destroy() method is called, the container discards this internal reference and performs any cleanup required of state associated with the client or transaction."

And there is this TCK test org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextDesctructionTest which does the following :

      CreationalContext<ManagedBean> creationalContext = getCurrentManager().createCreationalContext(managedBean);
      ManagedBean instance = managedBean.create(creationalContext);
      EntityManager em = instance.getPersistenceContext();
      assert em.isOpen();
==>managedBean.destroy(instance, creationalContext);
      assert !em.isOpen();

When I looked in to the debugger I see that managedBean.destroy() call results in to calling GlassFish injected EntityManagerWarpper.close() which correctly throws InvalidStateException. This is as per JPA spec where EntityManager.close() is supposed to thro IllegalStateException for container manager EntityManager. See http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#close(). 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the weld-issues mailing list