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
seam-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/seam-dev