[weld-dev] proper handling of Events for beans in inactive Contexts?

Mark Struberg struberg at yahoo.de
Fri Apr 9 07:19:56 EDT 2010


Sorry, I don't really get it.

If you have a 'transient conversation' and you like to send an event to BeanX and there is no contextual instance of that BeanX already in your transient conversation context, then a new one will get created and the event will get received by this contextual instance.

However, a few nanoseconds later the restoreView phase will restore the ViewRoot and we find a cid=4711 there. So we will now lookup this context with cid=4711 and oops, this already contains a contextual instance of BeanX which DIDN'T get the event!

So what is the transient conversation really doing? What is it for?

Sometimes a context may return isActive() == false and this has a very good reason! Doing any trickery in such cases will imo cause more problems than they solve.

LieGrue,
strub

--- Pete Muir <pmuir at redhat.com> schrieb am Fr, 9.4.2010:

> Von: Pete Muir <pmuir at redhat.com>
> Betreff: Re: [weld-dev] proper handling of Events for beans in inactive Contexts?
> An: "Mark Struberg" <struberg at yahoo.de>
> CC: weld-dev at lists.jboss.org
> Datum: Freitag, 9. April, 2010 11:37 Uhr
> Tricky situation, and something we
> "fixed" in Seam by having a transient conversation always
> active. I have a feeling that is what CDI should do to.
> 
> On 25 Mar 2010, at 16:49, Mark Struberg wrote:
> 
> > Hi!
> > 
> > I have the following scenario:
> > 
> > *) A ServletFilter fires a UserLoggedInEvent 
> > *) A @ConversationScoped MyBean @Observes
> UserLoggedInEvent with Reception.ALWAYS
> > 
> > The problem here is that the Conversation is not yet
> 'opened' at the time the ServletFilter fires that event.
> Thus ConversationContext.isActive() == false and I cannot
> create this bean. 
> > 
> > A similar situation appears if you try to send an
> event to a @ViewScoped bean from a JSF phase where the
> ViewMap doesn't yet exist.
> > 
> > So since there is no way to create a contextual
> instance, the obvious solution is to not send the
> notification to this very bean.
> > 
> > I didn't find this covered in the spec and I don't yet
> see much we can do in this case. This may cause some not so
> obvious behaviour and user may wonder why they don't get the
> event.
> > 
> > So, should we log some info in this case or silently
> swallow it?
> > 
> > 
> > txs and LieGrue,
> > strub
> > 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Sie sind Spam leid? Yahoo! Mail verfügt über einen
> herausragenden Schutz gegen Massenmails. 
> > http://mail.yahoo.com 
> > 
> > _______________________________________________
> > weld-dev mailing list
> > weld-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/weld-dev
> 
> 

__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails. 
http://mail.yahoo.com 



More information about the weld-dev mailing list