На JSP классе мы пользуемся бином FormUtils и все методы этого бина syncronized static. В качестве аргумента им всем передается объект pageContext, иногда что-нить еще.
Вот пример одного из методов:
Code: Select all
public synchronized static String getAction(final String logoffAction,
final PageContext pageContext)
{
final HttpServletRequest request =
(HttpServletRequest)pageContext.getRequest();
final HttpSession session = pageContext.getSession();
final String action = request.getParameter(ACTION);
if ((logoffAction != null) // if suppied, check for logoff action
&& (action != null) // skip if no action specified
&& action.equals(logoffAction)) // logoff
session.invalidate();
return action;
}
Мой одногруппник Джонни высказал такое предположение:
Have you looked at class FormUtil? All the methods in the class are
synchronized. This is beneficial when the state of an object (instance
variables) must be protected. Class FormUtil has no instance
variables, however. I am worried that we are serializing access to an
object which doesn't require special protection. I just can't see how
we gain anything. I can see how we lose performance, however.
А мне кажется что:
I believe the reason for those methods to be syncronized is to put a lock on
the pageContext object till the method is done. This is probably related to
the issue that JSP page can be used simultaneously by several users and
each gets a separate thread.
Кто из нас прав? А может оба неправы?
Заранее спасибо за ответ. Любопытно узнать истину.
Сабина