On 08/22/2012 10:01 AM, Steve Ebersole wrote:
Do you at least know if a BeanManager needs to be passed? If so, I
do
There is a separate deployer that detects that beans.xml is present and
that a BeanManager will be available. I could make the JPA deployer
become aware of this knowledge.
not actually use the BeanManager instance until much later (second
phase
in our new vernacular); so an option if you do actually know whether you
need to pass the BeanManager or not would be to pass a BeanManager
proxy that does the lookup on demand.
I don't think the proxy could expect to use a jndi lookup of
"java:comp/BeanManager", so not sure that the proxy would help.
On Wed 22 Aug 2012 08:49:23 AM CDT, Scott Marlow wrote:
> I would like to give feedback to the JPA 2.1 EG, on the entity
> listener enhancement to support CDI. If the deployment archive that
> contains the persistence unit, is a bean archive, the BeanManager
> needs to be passed in as a property when creating the persistence unit
> service. The persistence provider will use the BeanManager to create
> instances of the entity listener classes, do injection and trigger
> lifecycle methods.
>
> Currently, the only way to get the CDI BeanManager in AS7, is doing a
> "java:comp/BeanManager" lookup (not helpful during deployment) or via
> the BeanManagerService. I tried to have the PersistenceUnitService
> depend on the BeanManagerService, but couldn't start the
> PersistenceUnitService service (got a
> "org.jboss.msc.service.CircularDependencyException: Service jboss-as
> has a circular dependency"
http://pastie.org/4565684).
>
> I'll also need to get access to the BeanManager earlier than the
> install phase. I need to pass the BeanManager as a property to the
> PersistenceProvider.createContainerEntityManagerFactory(PersistenceUnitInfo,
>
> Map) invocation which might occur early (if class transformers will
> rewrite application classes before they are loaded).
>
> I could avoid having the PU service depend on the BeanManagerService
> if I instead arrange for the PU service to get the BeanManager from
> the deployment unit (if available). However, if the
> BeanManagerService is stopped, the pu service wouldn't be stopped if
> we have a direct reference to the BeanManager. So, this (deployment
> unit) hack sounds less than ideal.
>
> Git branch
>
https://github.com/scottmarlow/jboss-as/tree/seven_jpa2_1_BeanManager
> integrates with the latest Hibernate master branch (Hibernate needs to
> be built locally) and has the currently broken BeanManager access code
> (gets the CircularDependencyException during deployment).
>
> Scott
--
steve(a)hibernate.org
http://hibernate.org