В чем разница между встроенным EJB-контейнером и фактическим серверным контейнером? - PullRequest
2 голосов
/ 11 марта 2012

Какова четкая разница между встроенными EJB-контейнерами и фактическими серверными контейнерами, которые используются в производстве.

Я могу найти 2 sceanrios.

  1. Например. glassfish-embedded-static-shell.jar - который не имеет никакой реализации и зависит от локальной установки сервера glassfish.
  2. Как и OpenEJB - для этого требуется добавить только jar-файл в classpath и не устанавливать его как таковой.

AFAIK, оба называются встроенными контейнерами. Так в чем же смысл?

Кроме того, имеет ли встроенный контейнер все функции, поддерживаемые спецификацией EJB?

1 Ответ

5 голосов
/ 11 марта 2012

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

Встраиваемый контейнер EJB может, но не обязан, иметь все функции, поддерживаемые спецификацией EJB.В таблице 27 (раздел 21.1) спецификации EJB 3.1 перечислены функции, необходимые для встраиваемого контейнера EJB.В частности, встраиваемый EJB-контейнер не необходим для поддержки:

  • Удаленных EJB (как клиент или как сервер).
  • Webservices
  • Таймеры
  • MDB и сущностные компоненты
...