Каковы некоторые потоковые методы для хранения данных о запросе одного пользователя в сервлете? - PullRequest
1 голос
/ 28 февраля 2010

Если сервлет не является потокобезопасным, значит ли это, что все объекты, созданные и на которые имеются ссылки в течение жизненного цикла сервлета, не являются потокобезопасными? Может быть, я не совсем понимаю, но в веб-приложениях вы почти всегда хотите учитывать данные, хранящиеся в течение жизненного цикла сервлета, который имеет отношение к запросу одного пользователя. Каковы некоторые из лучших практик для управления этими данными? Должен ли я создать экземпляр процессора (очень похожий на фронт-контроллер) для моего сервлета и обернуть его в синхронизированный блок? Похоже, это будет серьезной проблемой производительности.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2010

Только не назначайте данные области запроса или сеанса в качестве переменной экземпляра сервлета. Это все. Объявите и назначьте их внутри блока метода, и он станет потокобезопасным (читай: он больше не будет использоваться всеми запросами / потоками). Я подробно на это уже отвечал: На Java, как мне убедиться, что мое веб-приложение поддерживает потоки? .

1 голос
/ 28 февраля 2010

Переменные экземпляра не являются потокобезопасными. Локальные переменные (объявленные в методах) будут поточно-ориентированными; каждый поток по сути имеет свой собственный набор локальных переменных.

См. Эту статью JavaWorld по написанию поточно-ориентированных сервлетов для получения дополнительных советов, если вы ДОЛЖНЫ полагаться на переменную экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...