Хобрук: Ваш путь к мастерству в программировании

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

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

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

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


Ответы:


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 предназначены для сохранения бизнес-логики вашего приложения. Например, сессионный компонент без сохранения состояния может что-то вычислять, представлять веб-службу или что-то еще, что нужно вашему приложению. Компоненты, управляемые сообщениями, могут прослушивать очереди сообщений, поэтому они полезны, если вам нужна асинхронная связь. Компоненты Singleton гарантируют один экземпляр на компонент и т. д.

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

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

19.06.2013
  • +1 за полный ответ, я ищу сравнение серверов приложений, которые вы упомянули. что касается сложности/легкости интеграции и т.д. 19.06.2013
  • @melt321 Рад помочь. Что касается сравнения, я работал только с Websphere и Glassfish, поэтому порекомендую другие статьи: hwellmann.blogspot.com/2011/06/java-ee-6-server-comparison.html, stackoverflow.com/questions/217827/, stackoverflow.com/questions/1224822/websphere-vs-weblogic 19.06.2013

  • 2

    Контейнер Java EE: управляет выполнением EJB, JMS, JTA на сервере Java EE, например. Джей Босс, Глассфиш.

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

    20.06.2013
  • EJB может выполняться как в веб-контейнере, так и в контейнере EJB, чем они отличаются друг от друга, когда какой контейнер использовать. Можете ли вы объяснить плюсы и минусы контейнеров Web и EJB в отношении EJB? 25.01.2020

  • 3

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

    Вот что говорится в документе:

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

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

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

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

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

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

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

    07.12.2016

    4

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

    Например, мы не пытаемся управлять транзакцией в веб-контейнере, подобно Tomcat, мы обычно пытаемся управлять в веб-проекте, развернутом в Tomcat. В то время как веб-сервер/сервер приложений, такой как EJB, поступает наоборот.

    12.12.2014

    5

    Контейнер Java EE — это решение сервера приложений, которое поддерживает веб-контейнер, EJB 3 и другие API и службы Java EE.

    Сервер Oracle WebLogic, сервер GlassFish, сервер приложений IBM WebSphere, сервер приложений JBoss и Caucho Resin являются примерами контейнеров Java EE...

    29.09.2017

    6

    Приложения можно классифицировать следующим образом:

    • Настольное приложение, такое как графический интерфейс,
    • Веб-приложение, такое как динамические веб-страницы,
    • Корпоративное приложение, которое занимается основной бизнес-обработкой.

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

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

    04.12.2018
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..