tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Cunha <daniels...@gmail.com>
Subject Re: EntityManager/EntityManagerFactory not injected to CDI bean
Date Wed, 08 Feb 2017 12:58:04 GMT
Hynek,

Sorry the typo.

On Wed, Feb 8, 2017 at 10:57 AM, Daniel Cunha <danielsoro@gmail.com> wrote:

> Hy Hynke,
>
> for use @Inject in your EntityManger you need to create a produce for that.
> A sampe for it, you can do something lke that:
>
> @ApplicationScoped
> public class JPAFactory {
>     private EntityManagerFactory emf = Persistence
>             .createEntityManagerFactory("MY_PU");
>
>     @Produces
>     @RequestScoped
>     public EntityManager getEntityManager() {
>         return emf.createEntityManager();
>     }
>
>     public void close(@Disposes EntityManager em) {
>         if (em.isOpen()) {
>             em.close();
>         }
>     }
> }
>
>
> Then will be possible to @Inject your EntityManager. :)
>
>
>
> On Wed, Feb 8, 2017 at 10:05 AM, Hynek <hynek.cihlar@gmail.com> wrote:
>
>> Hello all!
>>
>> I have an issue with injecting EntityManagerFactory (or EntityManager)
>> into
>> a CDI managed bean.
>>
>> My application is structured such that I have a root app.ear containing
>> persistence.jar and rest.war. When deployed to TomEE 7.0.2 it initialized
>> and starts up OK (no errors in the logs). persistence.jar defines my JPA
>> entities, persistence.xml with persistent unit, a service class
>> referencing
>> EntityManager and providing business methods to the servlet classes in
>> rest.war:
>>
>> EntityManager is being resolved with a CDI bean below. The motivation is,
>> besides to have a bit more flexibility with CDI, to be able to explicitly
>> drive the life time of the produced EntityManager instances:
>>
>>
>>
>>
>> And the service consuming the produced EntityManager:
>>
>>
>> Both classes above are packaged in peristence.jar.
>>
>>
>> Then in rest.war the service is consumed as follows:
>>
>>
>> As I have mentioned the ear deploys OK with no apparent errors. But when a
>> request comes to RestServer *the app fails with a NullPointerException
>> inside of EntityManagerProducer.newEntityManager() due to emFactory being
>> null, it is never set*.
>>
>> Interesting to note, when I remove the @Inject annotation of Service.em
>> and
>> use @PersistentContext directly there, the entity manager is properly
>> injected into the Service EJB and the REST request passes OK.
>>
>> Any help is greatly appreciated!
>>
>> Thanks,
>> Hynek
>>
>>
>>
>>
>> --
>> View this message in context: http://tomee-openejb.979440.n4
>> .nabble.com/EntityManager-EntityManagerFactory-not-injected-
>> to-CDI-bean-tp4681031.html
>> Sent from the TomEE Users mailing list archive at Nabble.com.
>>
>
>
>
> --
> Daniel Cunha
> https://twitter.com/dvlc_
> http://www.tomitribe.com
> http://www.tomitribe.io
>



-- 
Daniel Cunha
https://twitter.com/dvlc_
http://www.tomitribe.com
http://www.tomitribe.io

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message