You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Fernando (JIRA)" <ji...@apache.org> on 2008/11/27 01:24:44 UTC

[jira] Commented: (OPENJPA-794) issues with closing/opening entity manager (slices) (can't seem to be able to create multiple entityManagers )

    [ https://issues.apache.org/jira/browse/OPENJPA-794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12651197#action_12651197 ] 

Fernando commented on OPENJPA-794:
----------------------------------

And I am using this code to do the binding/unbinding of the entity manager.  It is a very small chance that this interacts with the slices code, but I'm putting it up just in case.  It should be very close to what Spring does in it's OpenView filter code...



	public static void bindThread( EntityManagerFactory pmf ) {
		// logger.debug( "bindThread( " + pmf + " )" );
		if ( TransactionSynchronizationManager.hasResource( pmf ) ) {
			logger.error( "FOUND Entity MANAGER IN THREAD" );
			unbindThread( pmf );
		}
		EntityManager pm = pmf.createEntityManager();
		TransactionSynchronizationManager.bindResource( pmf, new EntityManagerHolder( pm ) );
	}

	public static void unbindThread( EntityManagerFactory pmf ) {
		// logger.debug( "unbindThread( " + pmf + " )" );
		if ( TransactionSynchronizationManager.hasResource( pmf ) ) {
			EntityManagerHolder holder = (EntityManagerHolder) TransactionSynchronizationManager.unbindResource( pmf );
			EntityManager pm = holder.getEntityManager();
			pm.close();
		}
	}


> issues with closing/opening entity manager (slices) (can't seem to be able to create multiple entityManagers )
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-794
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-794
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.0.0
>            Reporter: Fernando
>            Priority: Critical
>         Attachments: log.txt
>
>
> So, for each of my web requests I open an entitymanager at the begining, and close it at the end, something like this:
> EntityManager pm = pmf.createEntityManager();
> try {
>  chain.filter(...);
> }
> finally {
>  pm.close();
> }
> And this works perfectly without slices.  But when I turn on slices, this fails.  The first request works fine, but the second requests complains that the EntityManager has already been closed.  So it seems to be caching the EntityManager from the previous request...  can someone please help me figure out how to fix this??
> I'll attach the log.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.