please, correct my if i be wrong.

On Saturday 18 January 2003 22:56, you wrote:
> I agree that the currnet Jasper tag pooling could be improved.
>
>
> Per JSP Page (current)
> ----------------------
>
> The current tag pool manages one or more pools of tags on a per JSP
> page basis. With a synchronized method call for each get/reuse pair
> for a TagHandler used in the page. That page could have as many current
> requests as Processor threads.  The TagHandlerPool's for the JSP page
> could grow to the point where they have as many TagHandler elements
> as needed to handle the maximum number of concurrent requests (Threads).
>

how it be to reduce the synchronize methods to a big synchronize block at 
beginning and end of the page, storing all tag instances in another object, 
like local map, pageContext and so?

....by the way..is the pageContext.setAttribute(...,SCOPE_PAGE ) synchronize, 
and if yes, why?

> Per JSP Page Thread Local
> -------------------------
>
> Switching this to ThreadLocal would remove all need for synchronized
> access for the TagHandlerPool get/reuse but significantly increase the
> memory usage. You end up with a TagHandlerPool for each thread, for each
> JSP page.
>

each tomcat connect has it own thread pool, right so if i have http with 100, 
and https with 100, i have a lot of thread locale objects. Does you mean a 
pool per jsp/tag  or tag/thread?

> Both of these could require enoubh memory to hold the number of TagHandler
> classes = Number of Threads * Number of JSP pages * Number of unique
> TagHandlers needed per JSP
>
>
> There are two other options based on managing a global tag pool rather than
> a per JSP page tag pool.  If you have many JSP pages with custom tags there
> will be common tags/attributes used across all of them.  Why not be able
> to reuse these TagHandler's across all the JSP pages instead of on a per
> JSP page basis. This could significantly reduce the number of instances of
> TagHandler's which have to be pooled, and the memory the consume.  Consider
> the JSTL c:if tag and how many times it could get used across 20 different
> JSP pages.
>
> Global
> ------
>
> TagHandlerPool's which are global and pool all unique TagHandler classes
> for all JSP pages. In this case you would require one synchronized call at
> the start of the JSP page to populate its local pool with reusable
> TagHandler's from the global pool. Then on JSP page exit return the
> TagHandler's from its local pool to the global. Requires two synchronized
> method calls per JSP page execution, but mimimizes the memory footprint of
> pooled tags.
>

see first comment to reduce synchroniz. is a good idea, identify the taglibs 
with a attributes/attribute values/name combination...right?

> Global Thread Local
> -------------------
>
> TagHandlerPool's which are global within a thread and pool all unique
> TagHandler classes for all JSP pages which execute within the thread. No
> synchronized methods would be required for this design.  This would have a
> smaller memory footprint than the Per JSP Page (current) and Per Jsp Page
> Thread Local tag pools, but use more memory than the Global tag pool.

ok, see comment above.

>
>
> Of the four designs above I think the Global Thread Local design may be the
> best. It removes the need for synchronized get/reuse and has a smaller
> memory footprint than the Per JSP Page tag pool design.
>
> Regards,
>
> Glenn
>
> Costin Manolache wrote:
> > Bill Barker wrote:
> >>If tag-pooling works for you, I'm happy for you.  The current
> >>implementation
> >>doesn't work for me big time.  However, I'm very interested in Costin's
> >>claim that it can be done thread-local.
> >
> > One quick question ( looking at generated code ) - why is the TP limited
> > to 5 instances ? If you expect 20+ concurent requests ( where the TP
> > would actually matter ) - you'll have the overhead of TP sync, and almost
> > no benefit. Can you try again with a larger capacity ?
> >
> > Regarding the "claim" that it can be done thread-local: I attached a
> > first draft, I'll enhance it later ( it could use ThreadWithAttributes -
> > to save one extra hashtable lookup ). Let me know if it helps.
> >
> >
> > Costin
>
> --
> To unsubscribe, e-mail:  
> <mailto:[EMAIL PROTECTED]> For additional commands,
> e-mail: <mailto:[EMAIL PROTECTED]>

Regards,

Torsten


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

Reply via email to