Hi Gerhard,

OK, I got what you did, basically I did the same. You are right, that was 
pretty straight-forward, but I had to hard-code the persistence-unit name.

I have two ideas to inject the persistence-unit name into the producer-method 
for the EntityManager:

First idea: A @PersistenceUnitName qualifier-annotation to inject the name into 
the producer-method. Client code would have somethink like
public class Configuration {

  @Produces @PersistenceUnitName
  String getPersistenceUnitName() {
...
Not really nice, but the simplest solution to generify it.

Second idea:
The @PersistenceContext qualifier has a @Nonbind attribute persistenceUnitName 
which we can extract in the producer method. But then we get in scoping issues. 
Especially when having multiple persistence-units within one deployment. The 
second problem is: How can the @Transactional annotation know the 
persistence-unit-name.

Any other ideas?

Regards,
Arne

--

Arne Limburg - Enterprise Developer
OpenKnowledge GmbH, Oldenburg
Bismarckstraße 13, 26122 Oldenburg
Mobil: +49 (0) 151 - 108 22 942
Tel: +49 (0) 441 - 4082-0
Fax: +49 (0) 441 - 4082-111
[email protected]
http://www.openknowledge.de

Registergericht: Amtsgericht Oldenburg, HRB 4670
Geschäftsführer: Lars Röwekamp, Jens Schumann

Von: Gerhard Petracek [mailto:[email protected]]
Gesendet: Samstag, 13. Februar 2010 14:32
An: MyFaces Development
Betreff: Re: [Ext-CDI] @Transactional

hi arne,

i used the EntityManager to get an EntityTransaction.
you have to use cdi to create and inject it.
(i used some producer methods.)
i created @PersistenceUnit which is a cdi qualifier and
@Transactional which is a cdi interceptor binding.

basically it works and it isn't hard to use.
however, we have to think about an approach to provide as much as possible in a 
generic way.

regards,
gerhard

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

2010/2/13 Arne Limburg 
<[email protected]<mailto:[email protected]>>
Hi Gerhard,

Did you mean "i used UserTransaction"? If not, how do you receive your 
EntityTransaction?

I am working on a solution to get request-scoped EntityManagers injected within 
a servlet-container that does not even support the web-profile (which are the 
current jetty and the current tomcat). I am not able to get an EntityManager 
injected via @PersistenceContext in that environment. So it would be nice if 
there were some CDI-Extension to achieve this. The implementation would be 
pretty straight-forward except the configuration of the persistence-unit name 
and the handling of different persistence-units within one CDI-deployment unit.

Using JTA-Transactions vs. resource-local EntityTransactions is another issue 
here.

Regards,
Arne

--

Arne Limburg - Enterprise Developer
OpenKnowledge GmbH, Oldenburg
Bismarckstraße 13, 26122 Oldenburg
Mobil: +49 (0) 151 - 108 22 942
Tel: +49 (0) 441 - 4082-0
Fax: +49 (0) 441 - 4082-111
[email protected]<mailto:[email protected]>
http://www.openknowledge.de

Registergericht: Amtsgericht Oldenburg, HRB 4670
Geschäftsführer: Lars Röwekamp, Jens Schumann

Von: Gerhard Petracek 
[mailto:[email protected]<mailto:[email protected]>]
Gesendet: Freitag, 12. Februar 2010 19:59
An: MyFaces Development
Betreff: Re: [Ext-CDI] @Transactional

hi arne,

yes - i used EntityTransaction in the prototype and it works pretty well in a 
servlet container (that was the base idea).

regards,
gerhard

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces
2010/2/12 Arne Limburg 
<[email protected]<mailto:[email protected]>>
Hi folks,

I saw the discussion of adding an @Transactional-Annotation to your CDI 
extensions. I think Gerhard wrote it. I wonder if it deals with JTA 
transactions (which indeed would be pretty straight-forward) or with 
EntityTransactions of an resource-local EntityManager. I am working on the 
latter one and just would want to know if someone else is working on such 
stuff. I think it would be great, when we could archive injection of 
resource-local EntityManagers with transaction-support to deploy it on a tomcat 
or jetty. What do you think?

Regards,
Arne

--

Arne Limburg - Enterprise Developer
OpenKnowledge GmbH, Oldenburg
Bismarckstraße 13, 26122 Oldenburg
Mobil: +49 (0) 151 - 108 22 942
Tel: +49 (0) 441 - 4082-0
Fax: +49 (0) 441 - 4082-111
[email protected]<mailto:[email protected]>
http://www.openknowledge.de

Registergericht: Amtsgericht Oldenburg, HRB 4670
Geschäftsführer: Lars Röwekamp, Jens Schumann



Reply via email to