Почему сессионные компоненты без сохранения состояния являются однопоточными? - PullRequest
6 голосов
/ 27 августа 2008

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

После поиска в Google я нашел причину, согласно которой в спецификации Java EE предполагается, что они являются однопоточными. Но я не могу понять причину, по которой ?

указано *1003*

Ответы [ 2 ]

5 голосов
/ 27 августа 2008

SLSB являются однопоточными из-за контекста TX, принципал связан с экземпляром компонента, когда он вызывается. Эти бины объединяются, и если максимальный размер пула не достигается, они обрабатываются в отдельных потоках (зависит от поставщика).

Если бы SLSB были спроектированы как поточно-безопасные, каждый вызов выглядел бы как сервлет doGet / Post с информацией запроса, содержащей контекст Tx, информацию о контексте безопасности и т. Д. Таким образом, по крайней мере, код выглядит чистым (зависит от разработчика).

4 голосов
/ 27 августа 2008

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

Я помню рассуждения, обсуждаемые в обзорах оригинальной спецификации EJB 1.0. Я бы посмотрел на раздел целей спецификации. См. http://java.sun.com/products/ejb/docs.html для списка спецификаций.

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