what I usually do is to either get injected in the observer or pass as event parameter something related to the request. Can be your 'request processor'
Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau 2014-09-21 0:20 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: > @Romain > > By "request scoped event" you mean that all @Observes methods for that > particular event is in @RequestScoped beans or is it possible to fire events > so they are only visible to the current request? > > > On Sun, Sep 21, 2014 at 12:06 AM, Romain Manni-Bucau <[email protected]> > wrote: >> >> oh sorry, read async (the habit). In this case a request scoped even >> should work >> >> >> Romain Manni-Bucau >> Twitter: @rmannibucau >> Blog: http://rmannibucau.wordpress.com/ >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >> Github: https://github.com/rmannibucau >> >> >> 2014-09-20 23:51 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: >> > @Romain >> > >> > Its an synchronous task, not async. How can I then make sure no events >> > are >> > shared between requests? (or did I misunderstand your answer perhaps?) >> > >> > Regards >> > LF >> > >> > On Sat, Sep 20, 2014 at 11:48 PM, Romain Manni-Bucau >> > <[email protected]> >> > wrote: >> >> >> >> if that's async then you have no guarantee out of the box that it will >> >> work, I wouldn't bet on it without being bound to a particular >> >> container >> >> >> >> >> >> Romain Manni-Bucau >> >> Twitter: @rmannibucau >> >> Blog: http://rmannibucau.wordpress.com/ >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >> >> Github: https://github.com/rmannibucau >> >> >> >> >> >> 2014-09-20 23:35 GMT+02:00 Lars-Fredrik Smedberg <[email protected]>: >> >> > Hi Romain and Mark >> >> > >> >> > I was exploring the thoughts of using CDI Events to perform something >> >> > like >> >> > this. >> >> > >> >> > 1. In a request start a syncrhonous task >> >> > 2. The task would at some points during the process (not always, >> >> > depends >> >> > on >> >> > some business decisions) send events that the starter of the task >> >> > could >> >> > observe and possible change the outcome of the task. >> >> > 3. When the task is finished the request that started it returns an >> >> > answer >> >> > to the client >> >> > >> >> > Another way would be to create normal listeners (normal e.g. as used >> >> > in >> >> > Swing, addActionListener...) >> >> > >> >> > Is the CDI Event way something to consider (seems more elegant)? I >> >> > would >> >> > not >> >> > want observers of different requests (threads) see each others >> >> > events. >> >> > >> >> > Regards >> >> > LF >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > On Sat, Sep 20, 2014 at 7:46 AM, Mark Struberg <[email protected]> >> >> > wrote: >> >> >> >> >> >> s/mathing/matching/g >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> > On Saturday, 20 September 2014, 7:46, Mark Struberg >> >> >> > <[email protected]> >> >> >> > wrote: >> >> >> > > Yes all beans which are in active contests and have a mathing >> >> >> > > observer >> >> >> > > method. >> >> >> > >> >> >> > >> >> >> > How does it work: >> >> >> > >> >> >> > 1.) We collect all ObserverMethods which match the type and >> >> >> > generics >> >> >> > info >> >> >> > >> >> >> > 2.) From those ObserverMethods we filter out all which do not fit >> >> >> > the >> >> >> > qualifier >> >> >> > >> >> >> > 3.) Then we iterate over all the ObserverMethods and do the >> >> >> > following >> >> >> > >> >> >> > 3.1) if the Scope of the bean containing the ObserverMethod is not >> >> >> > active -> >> >> >> > skip it. (this can happen if you e.g. have a SessionScoped bean in >> >> >> > an >> >> >> > @Scheduled >> >> >> > management thread) >> >> >> > >> >> >> > 3.2) if there is already a Contextual Instance in the Context of >> >> >> > the >> >> >> > Scope we >> >> >> > call the observer method on that instance. >> >> >> > >> >> >> > 3.3.) if there is NO active Contextual Instance of the bean >> >> >> > containing >> >> >> > the >> >> >> > observer method yet and the @Observes has >> >> >> > javax.enterprise.event.Reception.ALWAYS (which is the default) >> >> >> > then >> >> >> > we >> >> >> > will >> >> >> > first create the Contextual Instance and then call the method. >> >> >> > >> >> >> > 3.4) ATTENTION: There is a special rule for @Dependent scoped >> >> >> > beans. >> >> >> > For >> >> >> > those >> >> >> > we must create a NEW instance every time and after the observer >> >> >> > method >> >> >> > returns >> >> >> > we will throw the instance away immediately. >> >> >> > If you have a @Dependent bean injected into some other >> >> >> > normalscoped >> >> >> > beans then >> >> >> > CDI will NOT invoke the observer methods on those instances! Which >> >> >> > effectively >> >> >> > renders observing events in @Dependent beans pretty much useless. >> >> >> > Just >> >> >> > as a side >> >> >> > note... >> >> >> > >> >> >> > >> >> >> > LieGrue, >> >> >> > strub >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> >> On Friday, 19 September 2014, 23:09, Romain Manni-Bucau >> >> >> > <[email protected]> wrote: >> >> >> >> > Hi >> >> >> >> >> >> >> >> basically the scope will be the one of the observing bean. There >> >> >> >> is >> >> >> >> no >> >> >> >> filter by scope in notification triggering. >> >> >> >> >> >> >> >> >> >> >> >> Romain Manni-Bucau >> >> >> >> Twitter: @rmannibucau >> >> >> >> Blog: http://rmannibucau.wordpress.com/ >> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau >> >> >> >> Github: https://github.com/rmannibucau >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> 2014-09-19 22:00 GMT+02:00 Lars-Fredrik Smedberg >> >> >> > <[email protected]>: >> >> >> >>> Hi! >> >> >> >>> >> >> >> >>> When firing an CDI-Event, beans in what scope will be able to >> >> >> >>> @Observe >> >> >> > it? >> >> >> >>> Is it @ApplicationScoped, @SessionScoped belonging to the same >> >> >> >>> session >> >> >> > as >> >> >> >>> the one it was fired from and @RequestScoped belonging to the >> >> >> >>> same >> >> >> > thread >> >> >> >> as >> >> >> >>> the one it was fired from? (We do not use any JSF and >> >> >> > @ConversationScoped >> >> >> >>> beans). >> >> >> >>> >> >> >> >>> Could someone clarify this and if possible point to some specs >> >> >> >>> and >> >> >> > chapters >> >> >> >>> for me to read about it in more detail? I did look in JSR299 >> >> >> >>> but >> >> >> >>> I >> >> >> > might >> >> >> >>> have overlooked it. >> >> >> >>> >> >> >> >>> Thanks >> >> >> >>> Lars-Fredrik >> >> >> >>> >> >> >> >>> -- >> >> >> >>> Med vänlig hälsning / Best regards >> >> >> >>> >> >> >> >>> Lars-Fredrik Smedberg >> >> >> >>> >> >> >> >>> STATEMENT OF CONFIDENTIALITY: >> >> >> >>> The information contained in this electronic message and any >> >> >> >>> attachments to this message are intended for the exclusive use >> >> >> >>> of >> >> >> >>> the >> >> >> >>> address(es) and may contain confidential or privileged >> >> >> >>> information. >> >> >> >>> If >> >> >> >>> you are not the intended recipient, please notify Lars-Fredrik >> >> >> > Smedberg >> >> >> >>> immediately at [email protected], and destroy all copies of >> >> >> >>> this >> >> >> >>> message and any attachments. >> >> >> >> >> >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > -- >> >> > Med vänlig hälsning / Best regards >> >> > >> >> > Lars-Fredrik Smedberg >> >> > >> >> > STATEMENT OF CONFIDENTIALITY: >> >> > The information contained in this electronic message and any >> >> > attachments to this message are intended for the exclusive use of the >> >> > address(es) and may contain confidential or privileged information. >> >> > If >> >> > you are not the intended recipient, please notify Lars-Fredrik >> >> > Smedberg >> >> > immediately at [email protected], and destroy all copies of this >> >> > message and any attachments. >> > >> > >> > >> > >> > -- >> > Med vänlig hälsning / Best regards >> > >> > Lars-Fredrik Smedberg >> > >> > STATEMENT OF CONFIDENTIALITY: >> > The information contained in this electronic message and any >> > attachments to this message are intended for the exclusive use of the >> > address(es) and may contain confidential or privileged information. If >> > you are not the intended recipient, please notify Lars-Fredrik Smedberg >> > immediately at [email protected], and destroy all copies of this >> > message and any attachments. > > > > > -- > Med vänlig hälsning / Best regards > > Lars-Fredrik Smedberg > > STATEMENT OF CONFIDENTIALITY: > The information contained in this electronic message and any > attachments to this message are intended for the exclusive use of the > address(es) and may contain confidential or privileged information. If > you are not the intended recipient, please notify Lars-Fredrik Smedberg > immediately at [email protected], and destroy all copies of this > message and any attachments.
