каково значение параллелизма при внедрении ejb3 в сервлет?

#concurrency #ejb-3.0 #cluster-computing

#параллелизм #ejb-3.0 #кластерные вычисления

Вопрос:

я хочу сравнить внедрение ejb3 с методом поиска jndi, привязывает ли внедрение 1 конкретный экземпляр прокси к сервлету?? Если это так, то в кластеризованной среде такая жесткая привязка к времени выполнения может привести к неэффективности.

Ответ №1:

Для лиц без состояния прокси EJB равен 1 ко многим со своими резервными экземплярами (обычно объединенными в пул) и безопасен для внедрения в сервлет.

Для Singleton прокси EJB равен 1 к 1 со своим резервным экземпляром, но контейнер (или компонент) отвечает за обеспечение безопасности или запрета одновременных вызовов, в зависимости от бизнес-логики каждого метода. @AccessTimeout можно использовать для управления временем ожидания блокировки.

Для отслеживания состояния прокси EJB равен 1 к 1 со своим резервным экземпляром, и его небезопасно внедрять в сервлет. Начиная с EJB 3.1, параллелизм сеансовых компонентов с отслеживанием состояния обеспечивает некоторую безопасность, но из-за тайм-аутов сеансовых компонентов с отслеживанием состояния внедрение сеансового компонента с отслеживанием состояния в сервлет вряд ли когда-либо будет полезным.

Комментарии:

1. Хороший чистый ответ. Небольшое дополнение, @AccessTimeout — замечательный способ указать условия «что, если мой компонент занят», связанные с многопоточным доступом. Определенно подходит для систем с высокой степенью параллелизации и может использоваться всеми сеансовыми компонентами.

2. Спасибо :-). Обновил ответ, чтобы отметить параллелизм SFSB (хотя я все еще не думаю, что внедрение SFSB в сервлет полезно).

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

4. Ах, я не знал, что @AccessTimeout имеет такой эффект для лиц без гражданства. WebSphere Application Server, с которым я наиболее хорошо знаком, всегда выделит экземпляр при необходимости, и он уничтожит экземпляр после завершения метода, если пул заполнен.

5. … хотя при втором чтении раздела 4.3.14 EJB 3.1 я не вижу, что @AccessTimeout применяется к SLSB?