On 11/07/2011, at 4:07 AM, Mark Struberg wrote:

> Hi folks!
> 
> While reviewing an OWB bug report, 2 questions came up:
> 
> a.) EnvironmentUtils#isEEEnvironment() relies on the absence of 
> 'javax.ejb.Stateless' to decide if a PersitenceUnit gets injected or if you 
> need to do it yourself. I think this is an unrelieable assumption. E.g. there 
> are a few Extensions which emulate Stateless Session beans via a CDI 
> Extension by morphing them into @ApplicationScoped.

This is not ideal, but I don't think there is really any portable way to detect 
if the environment is an EE environment or not. I was originally planning to 
add a method for configuring this, but it appears I did not get around to it. 

> 
> b.) in ManagedPersistenceContextExtension#registerManagedPersistenceContext 
> you register the bean for the EntityManager as passivationCapable. This is 
> never _never_ NEVER true. The EntityManager is not Serializable! There is imo 
> no way to have an EntityManager in a bean scoped other than @RequestScoped or 
> shorter (e.g. @TransactionalScoped). Any other trick is not working in a 
> portable way. This is mainly caused by JPA still supporting pessimistic 
> locking (_real_ locks in the database) as first class citizens. 
> 

Without this it is not possible to have a conversation scoped entity manager. 
The hibernate EntityManager is in fact Serializable. Locks should not be a 
problem as long as you do not attempt to serialise the EM in the middle of a 
transaction.

Stuart


> But I'd be happy if anyone could enlighten me and tell us how it works ;) 
> 
> LieGrue,
> strub
> _______________________________________________
> seam-dev mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/seam-dev


_______________________________________________
seam-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-dev

Reply via email to