[cdi-dev] [JBoss JIRA] (CDI-520) 3.6. Java EE components

Mark Struberg (JIRA) issues at jboss.org
Sat May 2 18:10:45 EDT 2015


    [ https://issues.jboss.org/browse/CDI-520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13064794#comment-13064794 ] 

Mark Struberg commented on CDI-520:
-----------------------------------

I agree that the sample with the @PersistenceContext EntityManager is not the best and has many implications and problems. E.g. you can inject a @PersistenceContext into a CDI bean but the EJB and EE umbrella specs only define that this EntityManager works _inside_ an EJB (read section about TransactionManagementType.CONTAINER).  So it doesn't make much sense at all to produce this...

Of course producing an EntityManager makes perfect sense in some other scenarios. E.g. injecting a @PersistenceUnit and producing a @RequestScoped EntityManager: https://github.com/struberg/lightweightEE/blob/jta/backend/src/main/java/de/jaxenter/eesummit/caroline/backend/tools/EntityManagerProducer.java

> 3.6. Java EE components
> -----------------------
>
>                 Key: CDI-520
>                 URL: https://issues.jboss.org/browse/CDI-520
>             Project: CDI Specification Issues
>          Issue Type: Clarification
>          Components: Java EE integration
>    Affects Versions: 1.1.Final
>            Reporter: Martin Andersson
>             Fix For: TBD
>
>
> I don't understand this text:
> "The instance used by the container to service an invocation of a Java EE component will not be the same instance obtained when using @Inject, instantiated by the container to invoke a producer method, observer method or disposer method, or instantiated by the container to access the value of a producer field."
> More specifically, I am trying to understand how we can use CDI to put a scope on {{EntityManager}} whose life cycle is rather undefined by JPA. I see that the specification use an example of a {{@Disposes}} method to close a container-managed entity manager which throw {{IllegalStateException}} in the disposer (!). Anyways, trying to solve this puzzle has led me to the paragraph quoted previously, of which I understand nothing to be honest.
> My research about the "CDI managed container-managed entity manager" continues. As of now, the example is flawed and a container-managed entity manager remains open after the disposer method. Anyways, I might open up a separate ticket for that.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


More information about the cdi-dev mailing list