Почему сеансные являются однопоточен?

голоса
6

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

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

Задан 27/08/2008 в 09:25
источник пользователем
На других языках...                            


2 ответов

голоса
5

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

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

Ответил 27/08/2008 в 09:29
источник пользователем

голоса
4

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

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

Ответил 27/08/2008 в 15:47
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more