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

Reply via email to