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

Контейнеры Java EE против веб-контейнеров

Я относительно новичок в Java EE/EJB, и я много читал о контейнерах Java EE. У меня был опыт работы с веб-контейнером (WAR файл в jboss). Я также знаю, что Jboss также может использоваться как контейнер Java EE.

Мой вопрос в том, в чем разница между контейнером Java EE против веб-контейнера?

Я знаю, что Java EE также может содержать файл .war. Разные ли они и каковы их различия? Существуют ли какие-либо предпочтения поставщика, которые лучше всего подходят?

4b9b3361

Ответ 1

Прежде всего, "J2EE" - это устаревшая аббревиатура, теперь она просто называется "Java Enterprise Edition" или Java EE.

В отличие от контейнера сервлетов (например, Tomcat), "полные" серверы приложений Java EE также содержат контейнер EJB. EJB являются Enterprise Java Beans, и вы можете много узнать о них, например, здесь (глава IV). EJB теперь находятся в версии 3.2 (Java EE 7 и Java EE 8), предыдущие версии - 3.1 (Java EE 6) и 3.0 (Java EE 5); однако наибольшая разница между v2 и v3.

EJB предназначены для ведения бизнес-логики вашего приложения. Например, сеансовый компонент без состояния может вычислить что-либо или представлять веб-службу или что-то, что нужно вашему приложению. Компоненты, управляемые сообщениями, могут прослушивать очереди сообщений, поэтому они полезны, если вы хотите асинхронную связь. Одиночные бобы гарантируют один экземпляр для боба и т.д.

Что касается типа файла, EJB упаковывается в файл.jar, веб-приложение в.war файл, и если вы хотите смешать их в одном приложении, это будет файл.ear("корпоративный архив").

Помимо EJB, "полный" сервер приложений также заботится о транзакциях, безопасности, ресурсах JDBC... Я бы очень рекомендовал использовать его в контейнере сервлетов, но преимущества сопряжены со сложностью, поэтому вам придется потратить разумное количество времени чтобы узнать, как бороться с Websphere (Payara и WildFly намного проще и являются моими любимыми). JBoss и Weblogic также довольно популярны, и если вы знакомы с Tomcat, взгляните на TomEE.

Ответ 2

контейнер Java EE: Управляет выполнением запуска EJB, JMS, JTA на сервере Java EE, например. JBoss, Glassfish.

Веб-контейнер: Управляет выполнением веб-страниц, сервлетов и некоторых компонентов EJB для приложений Java EE. Веб-компоненты и их контейнер запускаются на веб-сервере, таком как Jetty, tomcat.

Ответ 3

Веб-контейнер и EJB-контейнер представляют собой подмножества контейнеров Java EE. Контейнеры Java EE также включают контейнер клиента приложения и контейнер апплета.

Здесь doc говорит:

Процесс развертывания устанавливает компоненты приложения Java EE в Контейнеры Java EE.

  • Сервер Java EE: часть времени выполнения продукта Java EE. Сервер Java EE предоставляет EJB [контейнер и веб-контейнер] *.

  • Контейнер Enterprise JavaBeans (EJB): управляет выполнением корпоративного beans для приложений Java EE. Предприятие beans и их контейнер запускается на сервере Java EE.

  • Веб-контейнер. Управляет выполнением страниц JSP и компонентов сервлета для приложений Java EE. Веб-компоненты и их
    контейнер запускается на сервере Java EE.

  • Клиентский контейнер приложения. Управляет выполнением клиентских компонентов приложения. Клиенты приложений и их контейнер запускается на клиенте.

  • Контейнер апплетов. Управляет выполнением апплетов. Состоит из веб-браузера и Java Plug-in, работающих на клиенте вместе.

* В документе они используют множественную форму, но на самом деле у вас есть только один веб-контейнер и один контейнер EJB на Java EE-сервер.

Ответ 4

Я думаю, может быть, разница между ними - это протоколы, которые они поддерживают.

Например, мы не пытаемся управлять транзакцией в веб-контейнере, например tomcat, мы обычно пытаемся контролировать в web-proj, который развернут в tomcat.while сервер веб-приложений, например ejb, принимает обратное.

Ответ 5

Контейнер java EE Container представляет собой решение для приложений, поддерживающее веб-контейнер, EJB 3 и другие API и сервисы Java EE, сервер Oracle WebLogic, сервер GlassFish, сервер приложений IBM WebSphere, сервер приложений JBoss и Caucho Resin - примеры Java EE... Надеюсь, он ответит на ваш запрос

Ответ 6

Приложения можно классифицировать следующим образом: Настольное приложение, такое как графический интерфейс, веб-приложение, такое как динамические веб-страницы, корпоративное приложение, которое относится к основной бизнес-обработке.

Корпоративное приложение: обычно не очень много взаимодействия с пользователем. В этом случае, если вы хотите, чтобы ваше приложение взаимодействовало с разрозненными приложениями, распределенными по интрасети/интернету с помощью веб-служб, JMS или JTA (соединение с сервером транзакций Mainframe), вам требуется Java EE с контейнерами EJB и другими функциями безопасности.

Веб-контейнер: скорее, если вы хотите взаимодействовать с распределенным приложением с использованием JNI или просто разговаривать с РСУБД или просто визуализировать статические или динамические веб-страницы, вам достаточно веб-контейнера. Ваш HTTP-запрос из браузера может вызывать и выполнять программы Java через сервлет. Программа Java может вызывать API JDBC для общения с РСУБД. Аналогичным образом вы можете вызвать программу C или Java с другого сервера с помощью JNI или RMI.