[jpa-spec users] Re: Integration with CDI

From: Adam Bien <>
Date: Fri, 15 Jul 2011 07:03:37 +0200

Hi Craig,

On 14.07.2011, at 03:51, Craig Ringer wrote:

> Linda,
> I realize you're busy and juggling a lot of things, so don't worry about letting my mail get lost in the noise. Thanks for taking the time to reply now.
> It sounds like it might be necessary to bash together a couple of example apps to show why injection into entity listeners is necessary (showing how problematic the BeanManager access hacks currently required are), along with a more definite proposal for how this might work. I'll see if I can interest anybody in collaborating on that.
> Personally, I think injection into JPA entities themselves is a marginal idea at best; if anything I think a warning should be emitted if @Inject is found in an @Entity. It's entity listeners where I think injection support and lifecycle annotations are vital.

@Inject inside entities should not work at all. Entities are managed by the EM and not by CDI. BUT: I would like to have a standard way to access an EntityManager from an entity. E.g. passing the EM as a parameter during attachment or obtaining it through current transaction.
 Currently we often use ThreadLocal as a hack to pass entities between an EJB and JPA-Entities...
> I'll work on bashing out a demo and description. Time and other committments permitting I might even be able to have a look at how hard it'd be to retrofit support into EclipseLink as a proof of concept.
> I'm glad to hear the DS mapping issue got some attention. It's one of those interesting little holes in the spec that I'm always tripping over, making Java EE 6 usability and productivity far from what it could be. I keep a list here:

Great post!,


> On 14/07/2011 3:51 AM, Linda DeMichiel wrote:
>> Hi Craig,
>> Thanks for the feedback. I do apologize for having let your previous email
>> sent to me lapse. Unfortunately it got buried hundreds of emails deep in my
>> inbox.
>> Actually, one of the things I have been discussing behind the scenes is
>> how we might support CDI injection into entity listeners. In the meantime,
>> if you or Adam have a concrete proposal that you would like to make,
>> that is of course welcome. As you may have noticed, however, the group
>> as a whole is not currently supportive of injection into JPA entities.
>> If that changes, it could also be considered further.
>> With regard to the datasource mapping item you mention (as well as the
>> GlassFish issue you filed) -- that has triggered some interesting
>> internal discussion here. We think your point is valid, and I will add
>> this item to the queue for consideration for JPA 2.1.
>> regards,
>> -Linda
>> On 7/13/2011 1:57 AM, Craig Ringer wrote:
>>> Dear Linda Demichiel,
>>> I contacted you a few weeks ago to find out about any plans the JPA 2.1 spec team had about specifying integration with
>>> CDI, because it's a real sore-point in development of EE 6 apps at present.
>>> I thought I'd follow up and see what you thought, as I haven't heard back from you or seen any further discussion on the
>>> -experts mailing list after Adam Bien reposted my message to him on that list.
>>> I'm really concerned that JPA 2.1 might come out without any kind of CDI integration, and it's such a big usability
>>> issue on any kind of DI-based app (ie: any standard Java EE 6 app using EJB 3.1 or plain CDI) that it'd be a big shame.
>>> If there's any way I can help with this I'd be happy to, though I don't feel particularly well qualified when it comes
>>> to the details.
>>> More recently I've noticed another interesting hiccup. According to the Glassfish folks, JTA datasource names in
>>> persistence.xml must be looked up only in the container global JNDI context, not the component/module context. That
>>> means datasources for persistence.xml cannot be mapped using a web.xml resource-ref and a glassfish-web.xml or
>>> jboss-web.xml resource-ref mapping. This seems like an ... interesting ... quirk, given that resources are mapped in
>>> almost all other contexts and _need_ to be mappable for inter-container portability. Is there any chance JPA 2.1 could
>>> specify that persistence contexts be initialized within module context, applying any mappings defined for that context?
>>> --
>>> Craig Ringer
>>> POST Newspapers
>>> 276 Onslow Rd, Shenton Park
>>> Ph: 08 9381 3088 Fax: 08 9388 2258
>>> ABN: 50 008 917 717
> POST Newspapers
> 276 Onslow Rd, Shenton Park
> Ph: 08 9381 3088 Fax: 08 9388 2258
> ABN: 50 008 917 717

Independent Consultant, Speaker, Java Champion
 Mobile: 0049(0)170 280 3144

 Author of:
 "Real World Java EE Night Hacks", "Real World Java EE Patterns--Rethinking Best Practices"