Услуги, предоставляемые различными контейнерами Java EE - PullRequest
2 голосов
/ 31 марта 2012

Я читаю эту книгу Начиная с платформы Java ™ EE 6 с GlassFish ™ 3: от новичка до профессионала , и у меня есть вопрос к изображению ниже.Я думал, что где-то читал, что такие сервисы, как веб-сервисы, предоставляются только в EJB-контейнере, но из рисунка ниже (который показывает сервисы, предоставляемые каждым контейнером: цитата), кажется, что веб-контейнер также предоставляет эту сервис.Это правильно или я неправильно истолковал изображение и текст изображения?И если это правильно, то это означает, что я могу упаковать свое приложение как WAR-файл и развернуть его в веб-контейнере и все еще использовать API веб-служб?

enter image description here

Ответы [ 3 ]

1 голос
/ 31 января 2013

Кэширование, пул, наименование, управление жизненным циклом и RMI

1 голос
/ 31 марта 2012

Кто-то исправляет меня, если я ошибаюсь, но исторически все обстоит несколько иначе: это EJB-сервис, который теперь можно аннотировать как @WebService.

Так что да, оба вебаи контейнеры ejb могут предоставлять веб-сервисы.И да, ваш веб-сервис может быть упакован в одну войну.

0 голосов
/ 31 марта 2012

Как уже заметил Осв, концепции смешиваются вместе.

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

Однако понятия веб-модуля и веб-службы также естественным образом перекрываются, поэтому, конечно, веб-модуль также поддерживает эту технику (не в последнюю очередь, потому что веб-службы - это больше, чем просто RPC).

Дальнейшее размытие линий объясняется тем фактом, что EJB-компоненты когда-то предназначались для помещения в модуль EJB, но в настоящее время их можно использовать так же хорошо, как и в веб-модуле.

В будущих версиях Java EE, скорее всего, будут еще более размыты границы, когда многие контейнерные сервисы (такие как транзакции, пулы и т. Д.), Которые теперь являются свойствами EJB-компонентов, будут отделены от них и станут доступны через аннотации CDI поэтому их можно применять ко всем «веб-компонентам» напрямую.

Таким образом, веб-модуль действительно является надмножеством модуля EJB.

Функция модуля EJB по-прежнему заключается в том, что он позволяет создать слой функциональности под веб-слоем, который изолирован с помощью загрузчиков классов. Это означает, что веб-модуль может ссылаться на классы, которые вы определяете в модуле EJB, но не наоборот. Кроме того, в модуле EJB недоступны чистые методы представления, такие как Servlet, JSP и JSF, и на данный момент нет никаких планов сделать эти методы доступными там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...