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