@Override public Object processInvocation(InterceptorContext interceptorContext) throws Exception { final ComponentInstance componentInstance = interceptorContext.getPrivateData(ComponentInstance.class); try { return interceptorContext.proceed(); } finally { ManagedReference entityManagerRef = (ManagedReference) componentInstance.getInstanceData(SFSBInvocationInterceptor.CONTEXT_KEY); if(entityManagerRef != null) { Map<String, ExtendedEntityManager> entityManagers = (Map<String, ExtendedEntityManager>) entityManagerRef.getInstance(); for(Map.Entry<String, ExtendedEntityManager> entry : entityManagers.entrySet()) { // close all extended persistence contexts that are referenced by the bean being destroyed entry.getValue().refCountedClose(); } } } } }
@Override public Object processInvocation(InterceptorContext interceptorContext) throws Exception { final ComponentInstance componentInstance = interceptorContext.getPrivateData(ComponentInstance.class); try { return interceptorContext.proceed(); } finally { ManagedReference entityManagerRef = (ManagedReference) componentInstance.getInstanceData(SFSBInvocationInterceptor.CONTEXT_KEY); if(entityManagerRef != null) { Map<String, ExtendedEntityManager> entityManagers = (Map<String, ExtendedEntityManager>) entityManagerRef.getInstance(); for(Map.Entry<String, ExtendedEntityManager> entry : entityManagers.entrySet()) { // close all extended persistence contexts that are referenced by the bean being destroyed entry.getValue().refCountedClose(); } } } } }