Являются ли перехватчики в потоке Struts2 небезопасными?

Я понимаю, что классы действий Struts2 являются потокобезопасными, потому что действия помещаются в стек значений. Стек ценностей, в свою очередь, является частью контекста действия. Поскольку контекст действия является локальным для потока, значения, хранящиеся в контексте действия (включая стек значений), уникальны для каждого потока. Таким образом, действия потокобезопасны.

Но рассмотрим перехватчики: они действительно полезны, они выполняют всю эту утомительную работу за программиста... например, проверки, получение значений параметров и т. д. Но следует учитывать следующее: перехватчики могут совместно использоваться несколькими Запросы. Так делает ли это перехватчики потоков небезопасными?

Имея в виду этот вопрос, я попытался найти в сети несколько хороших статей, связанных с этой проблемой. И я нашел очень хорошую статью, где они четко упомянули с примером, как перехватчики НЕ являются потокобезопасными.

Веб-страница: http://www.bullraider.com/java/struts2/tutorials/interceptors-and-thread-safety

Из этой статьи я узнал, что основная причина за тем, что перехватчики не являются потокобезопасными, является то, что перехватчики создаются только один раз. то есть каждый перехватчик имеет только один объект. Таким образом, поля экземпляра небезопасны, когда один и тот же экземплярInterceptor совместно используется потоками.

В конце статьи упоминается, что бывают случаи, когда даже перехватчики потокобезопасны. Но они не упомянули ни о каких таких случаях. Я порылся в сети, чтобы найти ответ... но тщетно :(

Может ли кто-нибудь сказать мне или дать мне ссылку, где я могу узнать, как сделать перехватчики потокобезопасными (или каковы сценарии, когда перехватчик потокобезопасен)?

9
задан Biman Tripathy 26 March 2012 в 19:54
поделиться