You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Timothy Ward (Commented) (JIRA)" <ji...@apache.org> on 2011/10/25 11:52:32 UTC

[jira] [Commented] (ARIES-765) Attempting to execute an operation on a closed EntityManagerFactory when the persistence unit is re-deployed

    [ https://issues.apache.org/jira/browse/ARIES-765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13134908#comment-13134908 ] 

Timothy Ward commented on ARIES-765:
------------------------------------

Having looked into this, this isn't actually an issue with the JTAEntityManager, it's an issue with blueprint (or possibly the JPA namespace hander, depending on your view of the world).

Effectively what we have is the following blueprint:

<reference id="foo" interface="javax.persistence.EntityManagerFactory/>

<bean id="not_working_after_update" class="SomeClass">
    <property name="bar">
        <bean factory-component="foo" factory-method="createEntityManager"/>
    </property>
</bean>


This injects the not_working_after_update bean with an EntityManager, created from the service reference. If the service reference goes away, and is then replaced, there is no re-injection of the stale EntityManager. This goes against the OSGi model of throwing away objects created by services when the service is unregistered.

We will discuss the best course of action (which may be to get something put in the spec) on the Aries lists


                
> Attempting to execute an operation on a closed EntityManagerFactory when the persistence unit is re-deployed
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: ARIES-765
>                 URL: https://issues.apache.org/jira/browse/ARIES-765
>             Project: Aries
>          Issue Type: Bug
>          Components: JPA
>    Affects Versions: 0.3
>         Environment: Glassfish 3.1.1
>            Reporter: Balazs Zsoldos
>
> We use the JPA entities in the following way:
> - entities1.jar
> - entities2.jar
> - pu.jar
> The first two contains entity classes but no persistence unit, the third contains the Meta-Persistence header and a persistence.xml file (named to something else not to be realized by Glassfish)
> We use the persistence unit with blueprint.
> When we re-deploy the pu.jar we have to re-deploy everything else (even the jars that do contain only services that are related to unchanged entity classes) manually as the following exception occurs:
> java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManagerFactory.
> 	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.verifyOpen(EntityManagerFactoryDelegate.java:305)
> 	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:276)
> 	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
> 	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:275)
> 	at org.apache.aries.jpa.container.impl.CountingEntityManagerFactory.createEntityManager(CountingEntityManagerFactory.java:71)
> 	at org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:132)
> 	at org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:87)
> 	at org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getCriteriaBuilder(JTAEntityManager.java:391)
> It would be nice if JTAEntityManager would realize when the persistence unit gets redeployed and would use the new instance.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira