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
