> I am afraid supporting multiple persistence-units in that
> scenario is very difficult...
Nope, it's really easy. I simply use Qualifiers to distinguish between them.
@Qualifier
public @instance Core {}
@Qualifier
public @instance Other {}
----
@RequestScoped
public class EMProducer {
private @PersistenceContext(unitName="core") EntityManager emCore;
private @PersistenceContext(unitName="other") EntityManager emOther;
public @Produces @Core EntityManager getCoreEM() {return emCore;}
public @Produces @Other EntityManager getOtherEM() {return emOther;}
Injection happens with
private @Inject @Core EntityManager
Got the idea?
LieGrue,
strub
--- Arne Limburg <[email protected]> schrieb am Sa, 13.2.2010:
> Von: Arne Limburg <[email protected]>
> Betreff: AW: [Ext-CDI] @Transactional
> An: "MyFaces Development" <[email protected]>
> Datum: Samstag, 13. Februar 2010, 20:06
> Hi Mark,
>
> thank you for your feedback. I was aware of the requirement
> of CDI-containers to inject JavaEE resources in a
> JavaEE-environment, but Gerhard and I are thinking about a
> generic non-JavaEE-solution for EntityManager-injection. And
> at least weld does no injection of JavaEE-resources in this
> case. How does OpenWebBeans?
> I am afraid supporting multiple persistence-units in that
> scenario is very difficult...
>
> Nonetheless it would be nice to see your
> multiple-database-handling TransactionInterceptor in CODI.
>
> 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
>
> -----Ursprüngliche Nachricht-----
> Von: Mark Struberg [mailto:[email protected]]
>
> Gesendet: Samstag, 13. Februar 2010 15:39
> An: MyFaces Development
> Betreff: AW: [Ext-CDI] @Transactional
>
> Hi!
>
> The JSR-299 spec defines that we have to support injection
> of EE-Resources.
>
> This was more explicit in the old version of the spec, but
> unless the wording got shortened, I still think injection of
> @PersistenceUnit and @PersistenceContext must be supported
> by any JSR-299 container (at least in an EE environment).
>
> For OpenWebBeans, you can simply use our
> openwebbeans-resource plugin. Please note that this is
> necessary because OWB is modular, and openwebbeans-impl (the
> core) will have no EE dependencies at all (not even JSF,
> JPA, etc!) This will get picked up automatically if it is
> available in the classpath, e.g. you can simply define the
> following maven dependency:
>
> <dependency>
>
> <groupId>org.apache.openwebbeans</groupId>
>
> <artifactId>openwebbeans-resource</artifactId>
>
> <version>${owb.version}</version>
> </dependency>
>
> OWB supports 2 different scenarios. If you are not running
> in a JTA aware container like e.g. OpenEJB, you will
> automatically use a simple resource version of an SPI
> implementation which uses
> Persistence#createEntityManagerFactory(unitName) for
> injecting (Thus getting an extended EM). If you use e.g.
> OpenEJB, we are able to get the injectable resources
> directly from there (thus getting a transactional EM).
>
> Once this is available, you can simply create a producer
> method for the EntityManager:
> https://svn.apache.org/repos/asf/openwebbeans/trunk/samples/reservation/src/main/java/org/apache/webbeans/reservation/util/EntityManagerUtil.java
>
> There is also an example on how to implement a
> TransactionalInterceptor:
> https://svn.apache.org/repos/asf/openwebbeans/trunk/samples/reservation/src/main/java/org/apache/webbeans/reservation/intercept/TransactionalInterceptor.java
>
> In my company, I already implemented a
> TransactionalInteceptor which is capable of handling
> multiple databases at a time and also correctly handles
> nested transactions. I hope to migrate this over to CODI in
> the near future.
>
>
> LieGrue,
> strub
>
>
> --- Arne Limburg <[email protected]>
> schrieb am Sa, 13.2.2010:
>
> > Von: Arne Limburg <[email protected]>
> > Betreff: AW: [Ext-CDI] @Transactional
> > An: "'MyFaces Development'" <[email protected]>
> > Datum: Samstag, 13. Februar 2010, 14:42
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > 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 create...@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]>
> >
> >
> >
> >
> >
> >
> > 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]
> >
> >
> > http://www.openknowledge.de
> >
> >
> >
> > Registergericht:
> > Amtsgericht Oldenburg,
> > HRB 4670
> >
> > Geschäftsführer:
> > Lars Röwekamp, Jens
> > Schumann
> >
> >
> >
> >
> >
> >
> >
> > Von: Gerhard
> > Petracek [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]>
> >
> >
> >
> >
> >
> >
> > 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]
> >
> >
> > http://www.openknowledge.de
> >
> >
> >
> >
> > Registergericht:
> > Amtsgericht Oldenburg, HRB 4670
> >
> > Geschäftsführer:
> > Lars Röwekamp, Jens Schumann
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Sie sind Spam leid? Yahoo! Mail verfügt über einen
> herausragenden Schutz gegen Massenmails.
> http://mail.yahoo.com
>
__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen
Massenmails.
http://mail.yahoo.com