2017-01-08 4 views
1

Я был немного удивлен, чтобы найти строку в документации Oracle, заявив, что МБР относительно недолгие:Действительно ли MDB действительно недолговечны даже при объединении?

сообщений компонент имеют следующие характеристики.

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

http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html#gipmj

Что это могло на самом деле означает, что с МБР, как ожидается, должны быть объединены? Есть ли какая-либо конкретная причина для создания/уничтожения этих данных чаще, чем сессионные компоненты без состояния?

+0

«В конце жизненного цикла контейнер вызывает метод аннотированный @PreDestroy, если он есть. Затем экземпляр компонента готов к сбору мусора». – OldProgrammer

+0

Хорошо, но как это происходит с пулом? Я ожидал, что в этом случае bean должен вернуться в пул. Я ошибаюсь? – user3714601

+2

Это скорее всего поведение контейнера. – OldProgrammer

ответ

0

Пульт управления сообщением можно настроить. Основной проблемой для настройки пула MDB является скорость поступления сообщений.

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

Относительно недолго

Я думаю, что каждый EJB связан с потоком, что означает, что контейнер резервирует некоторый ресурс для этого. Когда контейнеру нужен ресурс, выбор теоретически сводится к MDB, а не к Stateless.

[UPDATE]

Я должен исправить себя, если вы читаете спецификации и ту же фразу Относительно недолго сообщается даже для объекта сеанса (Steteless/Stateful). В то время как субъекты подробно описаны как долгое время:

Может быть долговечным (живет до тех пор, пока данные в базе данных). Сущность и ее первичный ключ выживают при столкновении контейнера EJB.

Если состояние объекта обновлялись по сделке в время контейнера разбитого, состояние главного лица восстанавливается в состояния последней зафиксированной транзакции, когда объект рядом извлекается.

Очевидно, что фразы предназначены для сравнения между объектами и объектами сеанса.Итак, чтобы получить:

  • Объект сеанса. (Относительно короткоживущий)
  • Объект, управляемый сообщениями. (Относительно короткоживущий)
  • Объект сущности. (Может быть долговечным)
+0

Звучит разумно, но мне интересно, есть ли какие-либо доказательства? Я не видел ничего подобного. – user3714601

+0

Основываясь на спецификации, как MDB, так и апатриды одинаково «относительно недолговечны». Поэтому, как следствие, неверно, что MDB сконструированы/деконструированы чаще, чем bean, но они имеют одинаковое поведение. – Leonardo

Смежные вопросы