Подтвердить что ты не робот

Что добавляет аннотации @Stateful или @Stateless?

Я просто разбираюсь с Java EE. Я знаю, что добавление аннотаций @Stateful или @Stateless к классу сделает его EJB bean. Но что происходит на заднем плане, когда я это делаю? Я вижу следующее в Википедии в отношении EJB.

  • Обработка транзакций
  • Интеграция с услугами сохранения, предлагаемыми Java API устойчивости (JPA)
  • Concurrency управление
  • Событие с использованием службы сообщений Java и Java EE Connector Архитектура
  • Асинхронный вызов метода

 

  • Когда я отмечаю класс как EJB, элементы, перечисленные выше, получают "позаботились" "в фоновом режиме? Выполняется совершенно другой путь кода. который проходит через каждый из вышеперечисленных, я делаю класс EJB, является что происходит?
  • Я вижу, что с использованием CDI у меня есть возможность впрыскивать EJB beans, как это было в случае с CDI beans. В этом случае я должен всегда использовать EJB beans вместо CDI beans, поскольку EJB beans более мощный, чем CDI beans?
4b9b3361

Ответ 1

См. этот ответ для получения некоторой информации по обоим вопросам.

В этом ответе подчеркивается, что:

  • EJBs и CDI beans являются проксимированными компонентами, объект, который вы получаете, является подделкой, реальный объект скрыт, и именно так добавляются сервисы: caller- > proxy- > services- > realObject
  • CDI и EJB фактически являются такими же, как таковые, смешайте их свободно. То, что вы используете, зависит от того, что вы пытаетесь сделать. Я имею тенденцию использовать CDI, если мне не нужен один из элементов, перечисленных в этом ответе. Затем я просто обновляю или добавляю новый bean.

Обратите внимание, что я пропустил в этом ответе всю концепцию @MessageDriven.

MessageDriven Beans

Очень интересно, что вы помещаете JMS/Connector в одну строку, точно так же, как они реализованы. Управляемый сообщениями beans (MDB) на самом деле должен называться "Connector-Driven Beans", поскольку все коммуникации и жизненный цикл MDB фактически привязаны к спецификации архитектуры коннектора и не имеют ничего общего с JMS напрямую - JMS - это просто единственное, что когда-либо видели люди Connector. Там есть большой потенциал. Надеемся, мы увидим некоторые улучшения в Java EE 7.