Представьте себе сильно используемый объект службы, который реализован как SLSB EJB 2.1, и это также само по себе является потокобезопасным из-за отсутствия состояния вообще. Все его общедоступные методы являются транзакционными (через CMT), наиболее просто требующими транзакции, но некоторые требуют новой транзакции.Масштабируемые последствия преобразования сессионных bean-компонентов без состояния в POJO
Если я преобразую этот SLSB в подлинный однопользовательский POJO (например, используя инфраструктуру DI), как это повлияет на масштабируемость приложения? Когда услуга была SLSB, контейнер EJB управлял пулом экземпляров, из которых каждый клиент получал бы свою собственную копию, поэтому мне интересно, превратит ли его в однопользовательский POJO какой-то конфликт для этого единственного экземпляра.
FWIW, этот номер не является synchronized
.
Уточнение: моя мотивация для преобразования SLSB в POJO - это простота как жизненного цикла объекта (true singleton versus container-managed), так и самого кода (один интерфейс и один аннотированный POJO, по сравнению с тремя интерфейсами, один класс компонента , и куча XML в ejb-jar.xml).
Кроме того, FWIW, рассматриваемая услуга является одним из компонентов размещенного веб-приложения, работающего на JBoss 3.x.
Этот ответ: http://stackoverflow.com/questions/134791/why-pool-stateless-session-beans/135840#135840 утверждает, что будет «много раздора и блокировки», но нет подтверждения, цитата , или даже заблаговременное голосование за это заявление, поэтому я не знаю, сколько веса ему дать (без обид для Мваниджи). –
Можете ли вы подробно остановиться на своей среде? Вы все еще используете сервер Java EE? Вы работаете на одной коробке или много? Сколько ядер в коробке? И зачем вам нужен однотонный POJO, в отличие от многих, работающих в разных потоках? –
@ Jim: Я обновил вопрос. Но ваш комментарий, похоже, подразумевает, что singleton не может обслуживать несколько потоков - это действительно так? Это зависит от моего вопроса; как использовать один POJO для сравнения в терминах масштабируемости с использованием объединенного SLSB? Будут ли какие-то потоки ждать, чтобы использовать POJO, пока другие не закончили? –