hi arne, @source code: we should start a new thread for discussing that. i'll send some suggestions within the next days.
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/15 Arne Limburg <[email protected]> > Hi Gerhard, > > > > I took a look at the CDI-API and think it is not so hard to implement > support for every custom scope. CDI is very framework-developer-friendly ;-) > > I try to extend my code with this feature this evening I think. > > > > BTW is there a better place to put my code at? > > > > 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:* Montag, 15. Februar 2010 14:38 > > *An:* MyFaces Development > *Betreff:* Re: [Ext-CDI] @Transactional > > > > hi arne, > > > > i'm talking about a conversation concept which allows different > conversations at the same time (one conversation for 1-n beans). > > furthermore, it should be possible to invalidate and/or restart them > immediately (not at the end of a request) and it should be independent of > plain cdi-conversations. so users can use both concepts in parallel. we > could call it e.g. @NamedConversation. > > > > however, as i said - if it is possible @Transactional should be compatible > with every custom cdi-scope. > > it isn't the easiest goal but i think it makes sense. so we should try it. > > > > 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/15 Arne Limburg <[email protected]> > > Hi Gerhard, > > > > We should implement the new conversation scope to fall back to the CDI > conversation scope, like currently the CDI conversation scope falls back to > request scope. This would have many advantages imho. I think, if we achieve > this, my EntityManager-injection implementation would work for it (just have > to replace @ConversationScoped with the new scope). > > > > 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:* Montag, 15. Februar 2010 13:44 > > > *An:* MyFaces Development > *Betreff:* Re: [Ext-CDI] @Transactional > > > > hi arne, > > > > thx for providing the source code. > > i'll have a look at it after the jsfdays. > > > > one of the goals is to provide an alternative conversation scope for cdi > which allows to use the conversation concepts provided by orchestra. > > so we have to ensure that it works with every custom cdi scope. > > (cdi conversations would be the default scope) > > > > 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/15 Arne Limburg <[email protected]> > > Hi, > > I've prototyped some code that injects conversation-scoped EntityManagers > reading the unitName from the qualifier annotation and added @Transactional > support for this EntityManagers. This code needs some thinking though, e.g. > how to handle the default-case (no unitName specified)... > > If you want to take a look at it, I have created a Wiki page and added my > code as attachment: > http://wiki.apache.org/myfaces/Extensions/CDI/DevDoc/Drafts/Transactional > > This code could be a starting point to implement Orchestra-like > conversations (starting with CDI-Conversations)... > > > 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 20:27 > > An: MyFaces Development > Betreff: AW: [Ext-CDI] @Transactional > > > 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 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]> > > > > > > > > > > > > > > > > > > > > > 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 > > > > >
