Находится ли EJB-контейнер на всех серверах приложений. EJB контейнер в глубину - PullRequest
9 голосов
/ 29 февраля 2012

Я новичок в EJB.Из всего того, что я до сих пор читал и искал, я понял следующее:

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

1) Я сомневаюсь, находится ли так называемый EJB-компонент на всех серверах приложений?

2) Когда мы говорим EJB 2.1 / 3.0 / 3.1, означает ли это, что выпущена новая версия контейнера EJB?

3) Контейнер EJB также находится на веб-серверах?

Спасибо.

Ответы [ 2 ]

14 голосов
/ 29 февраля 2012

Вы правильно поняли идею EJB.

  1. Да и нет .Зависит от того, что вы понимаете как «Сервер приложений» (двусмысленность, описанная ниже в ответе 3).

  2. Когда вы говорите, EJB 2.x / 3.0 / 3.1 или около того, вы имеете в видук конкретной спецификации EJB, которая означает, что вы имеете в виду набор сервисов , который поддерживает эта версия.Другими словами - да , это означает, что контейнер EJB должен быть в заданной версии.
    Сначала выпущена спецификация (вы можете видеть черновые версии, голосовать за новые функции и в основном участвовать в этомпроцесс).Затем написана справочная реализация (RI), чтобы показать, что она «выполнима», и вы можете использовать ее сразу.Затем разные поставщики могут предоставить свои собственные контейнеры EJB, которые должны соответствовать конкретной спецификации EJB.

  3. Существует несколько различных терминов, о которых вам необходимо знать.Просто чтобы быть уверенным, мы говорим об одном и том же:

    • Веб-сервер - это HTTP / HTTPS-сервер, такой как Apache HTTP-сервер , который обслуживает запросы клиентов.Этот термин относится не только к Java EE.
    • Веб-контейнер - это термин Java EE, который может означать несколько вещей, но обычно он относится к контейнеру сервлета и, скажем, контейнеру JSP.Эти контейнеры обслуживают веб-клиентов, поэтому это контейнер web .Как правило, в веб-контейнере есть веб-сервер (как в случае с Tomcat). Однако вы можете настроить его так, чтобы статические ресурсы были серверами только чистым веб-сервером, а динамический контент (ваше Java-приложение, сервлеты, JSP,и т. д.) будет сервером вашего веб-контейнера.
    • Сервер приложений является неопределенным именем.В мире пуристов Java EE это может означать только такой сервер, который обеспечивает все сервисы Java EE.Пуристы не-Java EE рассматривают сервер приложений как произвольный сервер, состоящий из вашего приложения.Согласно этому определению, вы можете назвать Tomcat (веб-контейнер и веб-сервер) сервером приложений .

Как видите, словарь неострый, как одна вещь может означать несколько немного разные вещи.Более того, начиная с Java EE 6 у нас есть профили.Это означает, что у вас может быть сервер приложений Java EE, соответствующий веб-профилю или полному профилю.В таких условиях только сервер веб-профилей следует рассматривать как сервер приложений .

Просто в качестве резюме - вы можете использовать EJB-контейнер в Web-контейнере.Взгляните на OpenEJB или в основном на проект TomEE .

10 голосов
/ 29 февраля 2012

Чтобы ответить на ваши вопросы

  1. Как правило, да.Сервер приложений обычно называется сервером с EJB-контейнером, таким как Glassfish, Jboss и т. Д. Но необходимо убедиться, что сервер приложений поддерживает EJB.

  2. ДА

  3. NO.Веб-серверы или веб-контейнеры (Tomcat, Jetty и т. Д.) Служат другим целям, чем EJB-контейнер.Но все серверы приложений имеют веб-серверы (вместе с контейнерами EJB.).

Контейнер EJB и сервер веб-контейнера (серверы) - это разные уровни в сценарии приложения Java EE.Проверьте эту ссылку для получения дополнительной информации.

...