On Tue, 4 Feb 2003, Mitchell Morris wrote:

> Date: Tue, 4 Feb 2003 12:43:02 -0500
> From: Mitchell Morris <[EMAIL PROTECTED]>
> Reply-To: Struts Developers List <[EMAIL PROTECTED]>
> To: 'Struts Developers List' <[EMAIL PROTECTED]>
> Subject: RE: DO NOT REPLY [Bug 16749]  -     Struts EL tag handlers
>     cannot be reused by containers
>
> Does this suggest that the core tag libraries (specifically
> org.apache.struts.taglib.html) have the wrong model for cleanup? That is,
> they reset their tags to known-good state in release() and not at the end of
> doEndTag(). Should this resetting take place after doEndTag() and release()
> be reserved for releasing long-held resources (there seem to be none of
> these)?
>

Since there are no "expensive" resources being acquired in any of the tag
handlers, the current model in the Struts tags is sufficient.

In particular, though, it would be incorrect for doEndTag() to modify the
properties that are set from tag attributes -- those should *only* be
cleaned up in release().

Craig

> > -----Original Message-----
> > From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> > Sent: Tuesday, February 04, 2003 12:25 PM
> > To: Struts Developers List
> > Subject: Re: DO NOT REPLY [Bug 16749] - Struts EL tag
> > handlers cannot be
> > reused by containers
> >
> >
> >
> >
> > On Tue, 4 Feb 2003 [EMAIL PROTECTED] wrote:
> >
> > >
> > > Struts EL tag handlers cannot be reused by containers
> > >
> >
> > It sounds like these tags definitely have a problem.  There's
> > been some
> > recent discussion on TOMCAT-USER about designing tags that
> > work reusably
> > as well.
> >
> > The bottom line:
> >
> > * The container can reuse instances of tag handlers
> >   when it sees that exactly the same set of attributes
> >   is used (not necessarily the same values).
> >
> > * This kind of reuse can happen whether or not the
> >   container implements "tag pooling".
> >
> > * When a tag handler instance is reused, the JSP page
> >   compiler can decide if it has already set a particular
> >   property on that instance, and omit the second set call.
> >   For example, in:
> >     <foo:bar a="1" b="2/>
> >     <foo:bar a="1" b="3"/>
> >   The second setA() call can be omitted, since the container
> >   knows that it already called setA("1") the first time.
> >
> > * If a tag instance is going to be reused, the doEndTag()
> >   call on the first use is going to be followed by the
> >   doStartTag() call of the second use.  Any per-use cleanup
> >   activity needs to happen at the end of doEndTag().
> >
> > * The net effect of all this is an important restriction -- it's
> >   not legal for a tag handler to modify the values stored by
> >   the setter calls from the page, *anywhere* in the path from
> >   doStartTag() through doEndTag().
> >
> > * The container will call release() after it has used the
> >   instance for the last time.
> >
> > Craig
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to