Имеет ли смысл синхронизировать метод веб-сервиса? - PullRequest
1 голос
/ 06 мая 2011

Я создаю веб-сервис, написанный на Java и размещенный на JBoss AS. Я еще не профессионал в разработке веб-сервисов, но правильно ли я понимаю, что каждый вызов сервиса инициирует новый поток , а не новый процесс? Имеет ли смысл иметь синхронизированные методы в моем сервисе? Мне нужно иметь метод, который вызывается только для одного пользователя одновременно, а не для нескольких.

1 Ответ

2 голосов
/ 06 мая 2011

Да, запросы обрабатываются отдельными потоками обработчиков. Для всего JBoss существует единый процесс.

Синхронизация может быть проблематичной, если ваше приложение заканчивается размещением на нескольких узлах кластера. Блокировки не будут распространяться по нескольким JVM без помощи какой-либо магии, такой как терракота. Для простого решения вы можете использовать пессимистическую блокировку строк в вашей базе данных для контроля доступа. Конечно, можно было бы бросить вызов всей конструкции, которая требует метода блокировки, и искать альтернативу, которая может работать параллельно.

Кроме того, блокировки из пакета java.util.concurrent предпочтительнее синхронизированного ключевого слова, если вы идете по этому маршруту.

...