EJB и синхронизация - PullRequest
6 голосов
/ 21 мая 2009

Синхронизированы ли сессионные компоненты (сессионные компоненты без состояния, сессионные компоненты с состоянием)?

Ответы [ 5 ]

5 голосов
/ 21 мая 2009

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

1 голос
/ 12 мая 2015

Бобы без гражданства : Каждый поток / запрос получит другой экземпляр EJB из пула. SLB не должен содержать никаких данных сеанса пользователя, любого состояния. Один и тот же код может выполняться параллельно. Один экземпляр доступен по одному потоку за раз.

Statefull bean синхронизируются для сеанса пользователя. Каждый пользователь получит собственный экземпляр сессий. Второй поток / запрос будет ожидать окончания первого потока. Statefull EJB может хранить пользовательские данные. Один пользователь не может выполнять один и тот же код параллельно. Разные пользователи могут выполнять один и тот же код параллельно.

При доступе к ресурсу, который не позволяет параллельный доступ, используйте Singleton EJB . Как следует из названия, есть только один экземпляр. По умолчанию EJB Singleton может быть доступен только одному потоку (одновременный доступ к контейнерам и @Lock (WRITE)).

0 голосов
/ 22 июня 2016

Сессионные компоненты без сохранения состояния и состояния являются потокобезопасными. Потому что каждый запрос получит выделенный экземпляр компонента, поэтому его не нужно синхронизировать.

Сессионные компоненты Singleton являются общими и должны синхронизироваться либо контейнером (параллелизм управляемого контейнера - CMC), либо пользователем (управляемый bean параллелизм - BMC).

0 голосов
/ 02 июля 2013

Корпоративные Java-бины не синхронизируются. Поскольку сессионные компоненты поддерживаются контейнером ejb, вам необходимо реализовать логику синхронизации на уровне приложения.

0 голосов
/ 15 апреля 2013

Совершенно верно для EJB-компонентов является то, что после создания EJB 3.0-компонентов методы EJB по умолчанию синхронизируются.

например.

@ Statelss Класс EJBclass {

void someMethod () { }

}

Теперь, если вы сделаете это как-то синхронизировать метод, он покажет ошибку, как если бы он не мог быть синхронизирован на этом уровне, поскольку он синхронизирован.

EJB 3.0 Бины умны, а производительность хорошая.

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