Friday, March 13, 2009

How can I implement a thread-safe JSP page? What are the advantages

Question :How can I implement a thread-safe JSP page? What are the advantages
and Disadvantages of using it? (JSP)

Answer :You can make your JSPs thread-safe by having them implement the
SingleThreadModel interface. This is done by adding the directive
<%@ page isThreadSafe="false" %> within your JSP page.
With this, instead of a single instance of the servlet generated for your JSP
page loaded in memory, you will have N instances of the servlet loaded
and initialized, with the service method of each instance effectively
synchronized. You can typically control the number of instances (N) that
are instantiated for all servlets implementing SingleThreadModel through
the admin screen for your JSP engine.
More importantly, avoid using the <%! DECLARE %> tag for variables. If
you do use this tag, then you should set isThreadSafe to true, as
mentioned above. Otherwise, all requests to that page will access those
variables, causing a nasty race condition.
SingleThreadModel is not recommended for normal use. There are many
pitfalls, including the example above of not being able to use <%! %>.
You should try really hard to make them thread-safe the old fashioned
way: by making them thread-safe

No comments: