HEllo Arne, what version of OWB did you use? Or did you use Weld?
on deployment I get the following error (2times): SEVERE: org.apache.webbeans.exception.WebBeansConfigurationException: Bean Name:null,WebBeans Type:MANAGED,API Types:[java.lang.Object,org.apache.myfaces.codi.EntityManagerProducer],Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]scope can not define other scope except @Dependent to inject InjectionPoint at org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1001) at org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:346) at org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:301) at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:154) at org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:120) at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:75) at org.apache.webbeans.servlet.WebBeansConfigurationListener.contextInitialized(WebBeansConfigurationListener.java:66) at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1239) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:466) at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:124) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:441) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:383) at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210) at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184) yes, the message is not easy to read, but it is basically complaining, that the EntityManagerProducer is not having @Dependent scope (since it has @ApplicationScoped). Good night, Matthias On Fri, Mar 5, 2010 at 3:30 PM, Arne Limburg <arne.limb...@openknowledge.de> wrote: > Hi, > > > > I have attached my source to EXTCDI-4. > > This is how you could use it, how it works and the limitations it has: > > > > First you have to qualify your EntityManager injection point with the > provided @PersistenceContext annotation. Then you can use the @Transactional > annotation. > > You will get the same (extended) EntityManager for all beans in the same > scope and different EntityManagers for beans from other scopes. > > > > The EntityManagerProducer then checks whether an entity manager for that > persistence unit and scope exists, creates one if not, and returns the > entity manager. > > > > In the current implementation you have to specify the unitName of your > persistence unit both at the @PersistenceContext annotation and the > @Transactional annotation. This is very ugly, we should define a sensible > default behavior here. The advantage is that you can have injected multiple > persistence units within one scope. > > > > Other potential problems: > > I don’t know if the detection of the current scope works correctly when an > EntityManager is injected in a bean with @Dependent scope or when a > @Transactional annotation is used on a bean with @Dependent scope > > I don’t know if the closing of the EntityManager works correct (i.e. if the > scope is still active when the EntityManager gets destroyed). Or could we > simply close the EntityManager, if it is open assuming that all beans in > that scope will be destroyed at the same time? > > > > What do you think? > > > > Regards, > > Arne > > > > -- > > > > Arne Limburg - Enterprise Developer > > OpenKnowledge GmbH, Oldenburg > > Bismarckstraße 13, 26122 Oldenburg > > Mobil: +49 (0) 170 - 2733627 > > Tel: +49 (0) 441 - 4082-0 > > Fax: +49 (0) 441 - 4082-111 > > arne.limb...@openknowledge.de > > http://www.openknowledge.de > > > > Registergericht: Amtsgericht Oldenburg, HRB 4670 > > Geschäftsführer: Lars Röwekamp, Jens Schumann > > > > Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com] > Gesendet: Donnerstag, 4. März 2010 20:39 > An: MyFaces Development > Betreff: Re: [Ext-CDI] @Transactional > > > > hi arne, > > > > i created a jira issue for it [1]. > > could you please upload your implementation. > > + a short description about the possible usages as well as restrictions (if > present). > > > > thx & regards, > > gerhard > > > > [1] https://issues.apache.org/jira/browse/EXTCDI-4 > > http://www.irian.at > > Your JSF powerhouse - > JSF Consulting, Development and > Courses in English and German > > Professional Support for Apache MyFaces > > 2010/2/20 Arne Limburg <arne.limb...@openknowledge.de> > > Hi, > > > > I’ve updated my code at > > http://wiki.apache.org/myfaces/Extensions/CDI/DevDoc/Drafts/Transactional > > It is not really tested and lacks some fallback-scenarios (i.e. > null-handling, etc.), but it is a starting point to inject scoped > EntityManagers for every CDI-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 > > arne.limb...@openknowledge.de > > http://www.openknowledge.de > > > > Registergericht: Amtsgericht Oldenburg, HRB 4670 > > Geschäftsführer: Lars Röwekamp, Jens Schumann > > > > Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com] > > 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 <arne.limb...@openknowledge.de> > > 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 > arne.limb...@openknowledge.de > http://www.openknowledge.de > > Registergericht: Amtsgericht Oldenburg, HRB 4670 > Geschäftsführer: Lars Röwekamp, Jens Schumann > > -----Ursprüngliche Nachricht----- > Von: Mark Struberg [mailto:strub...@yahoo.de] > > 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 <arne.limb...@openknowledge.de> schrieb am Sa, 13.2.2010: > >> Von: Arne Limburg <arne.limb...@openknowledge.de> >> Betreff: AW: [Ext-CDI] @Transactional >> An: "MyFaces Development" <dev@myfaces.apache.org> >> 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 >> arne.limb...@openknowledge.de >> http://www.openknowledge.de > >> >> Registergericht: Amtsgericht Oldenburg, HRB 4670 >> Geschäftsführer: Lars Röwekamp, Jens Schumann >> >> -----Ursprüngliche Nachricht----- >> Von: Mark Struberg [mailto:strub...@yahoo.de] >> >> 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 <arne.limb...@openknowledge.de> >> schrieb am Sa, 13.2.2010: >> >> > Von: Arne Limburg <arne.limb...@openknowledge.de> >> > Betreff: AW: [Ext-CDI] @Transactional >> > An: "'MyFaces Development'" <dev@myfaces.apache.org> >> > 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 >> > >> > arne.limb...@openknowledge.de >> > >> > >> > http://www.openknowledge.de > >> > >> > >> > >> > >> > Registergericht: Amtsgericht >> > Oldenburg, HRB 4670 >> > >> > Geschäftsführer: Lars >> > Röwekamp, Jens Schumann >> > >> > >> > >> > >> > >> > Von: Gerhard Petracek >> > [mailto:gerhard.petra...@gmail.com] >> >> > >> > 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 <arne.limb...@openknowledge.de> >> > >> > >> > >> > >> > >> > >> > 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 >> > >> > arne.limb...@openknowledge.de >> > >> > >> > http://www.openknowledge.de >> > >> > >> > >> > Registergericht: >> > Amtsgericht Oldenburg, >> > HRB 4670 >> > >> > Geschäftsführer: >> > Lars Röwekamp, Jens >> > Schumann >> > >> > >> > >> > >> > >> > >> > >> > Von: Gerhard >> > Petracek [mailto:gerhard.petra...@gmail.com] >> > >> > >> > 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 <arne.limb...@openknowledge.de> >> > >> > >> > >> > >> > >> > >> > 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 >> > >> > arne.limb...@openknowledge.de >> > >> > >> > 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 > > > > -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf