[jsr-314-open] request for listeners to support container injection and life-cycle callbacks

Norbert Truchsess norbert.truchsess at t-online.de
Sat Jul 25 18:26:16 EDT 2009


Am Mittwoch, den 22.07.2009, 21:40 -0700 schrieb Alaxander Smirnov:
> Most of the JSF listener tags supports 'bind' attribute that allows to
> use any JSF beans as  listeners, that could have any scope and where
> injection library could make any necessary work.
> Because narrow listener objects are saved in the components tree, in
> addition to the injection we should also define some addition
> lifecycle methods ( e.g. activate/passivate ), otherwise status of
> injected objects will be unpredictable. I suggest to check only is all
> listener could be defined as binding to the JSF beans.  
> 
In respect to status of injected objects I cannot see the need for
additional lifecycle methods (on the listener objects). We should
support @Postconstruct/@Predestroy annotations (for consistency). But
the status of injected Objects should be transparently managed by the
container, not the managed objects.

 Norbert

> On 07/22/2009 06:54 AM, Dan Allen wrote: 
> > On Wed, Jul 22, 2009 at 9:11 AM, Steve Roy
> > <steveroy at ensighttech.com> wrote:
> >         
> >         
> >         It would be nice if the design made it easy for resources to
> >         be released when the beforePhase/afterPhase processing
> >         completes so developers don't inadvertently forget to
> >         release expensive resources. 
> >         
> >         
> >         I can see the need for the feature. There is a danger
> >         though, that it makes it too easy for developers to
> >         implement time & resource expensive operations for
> >         invocations of the JSF lifecycle, which should be considered
> >         time sensitive.
> > 
> > My focus was not necessarily on hooks to cleanup expensive
> > resources. To clarify, my focus is to get listeners to tie in better
> > with the EE platform. For instance, if I am developing an extension
> > to JSF, and I want to manipulate the JSR-299 conversation or perhaps
> > wrap one or more phases in a UserTransaction, there is no portable
> > way to inject the necessary components. Another use case is that I
> > want to store state in a JSR-299 contextual object or a stateful EJB
> > session bean (or a hybrid of the two). Again, no portable way to
> > access this bean. What I am looking for are injections like the
> > following:
> > 
> > @Resource UserTransaction transaction;
> > @Current Conversation conversation;
> > @EJB Cart cart;
> > @Current StatusMessages statusMessages;
> > 
> > Right now phase and system event listeners have to use JNDI to get
> > at any of those resources, with subsequent calls necessary in some
> > cases (such as to get a contextual instance from the BeanManager).
> > 
> > My point is that managed objects in the Java EE platform should be
> > able to receive injections. I see phase listeners and system event
> > listeners as managed objects.
> > 
> > -Dan
> > 
> > 
> > -- 
> > Dan Allen
> > Senior Software Engineer, Red Hat | Author of Seam in Action
> > Registered Linux User #231597
> > 
> > http://mojavelinux.com
> > http://mojavelinux.com/seaminaction
> > http://in.relation.to/Bloggers/Dan





More information about the jsr-314-open-mirror mailing list