Определение контейнера Java - PullRequest
41 голосов
/ 22 августа 2011

Я много раз читал \ слышал о java-контейнерах, таких как контейнер сервлетов, однако я не могу найти хорошее определение того, что такое контейнер в корпоративном java-мире.

Кто-нибудь знает хорошее определение java-контейнера для предприятия?

Ответы [ 8 ]

40 голосов
/ 23 августа 2011

Обычными контейнерами в Java EE являются контейнер сервлетов и контейнер EJB, и я вижу их как примеры контейнеров IoC (Inversion of Control).Важными аспектами являются:

  1. В вашем коде нет функции main () или «ждать здесь логики запроса» - контейнер запускается и конфигурируется сам, а затем в конечном итоге инициализирует ваш код и доставляет запросы
  2. Ваш код может быть одним из многих похожих классов (сервлеты в контейнере сервлетов, EJB в контейнере EJB), чьи экземпляры имеют жизненные циклы, контролируемые контейнером.
  3. Запросы доставляются вашему сервлету или EJB по некоторому протоколу, определенному контейнером, с использованием ресурсов (например, портов HTTP), контролируемых контейнером, и, возможно, со значительной инфраструктурой (посмотрите на очереди HTTP-запросов, EJBбалансировка нагрузки и т. д.)
  4. Существуют значительные преимущества от таких функций, как контроль транзакций и управление безопасностью - поскольку контейнер вызывает ваш код, он имеет все возможности для незаметной реализации.
  5. Основная функциональность контейнера в значительной степени IOC, контейнер вызывает ваш код в соответствующее время, однако контейнер также предоставляет полезные API, которые ваш код может вызывать (например, для получения контекстов сервлета или EJB.
20 голосов
/ 22 августа 2011

Обращаясь в более общих чертах к шаблону Контейнера (из которых корпоративный Java-контейнер можно считать специализацией), книга Шаблоны серверных компонентов , автор M.Volter, et al.предлагает следующее:

[КОНТЕЙНЕР предоставляет] среду исполнения, которая отвечает за добавление технических проблем к КОМПОНЕНТУ ... Концептуально, она оборачивает КОМПОНЕНТЫ, таким образом давая клиентам иллюзиюинтегрированные функциональные и технические проблемы.

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

7 голосов
/ 22 августа 2011

Контейнеры Java EE

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

http://download.oracle.com/javaee/5/tutorial/doc/bnabo.html

5 голосов
/ 22 августа 2011

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

Различные уровни контейнеров поддерживают разные спецификации, например, контейнер веб-сервлета, такой как tomcat, не поддерживает некоторые спецификации уровня приложения, такие как EJB3,поэтому tomcat не может соединить ejb-файлы для инъекции в ваше приложение.

2 голосов
/ 17 августа 2017

Контейнер - это среда исполнения, которая приносит динамизм.Он создает HTTP-ответ, преобразует HTTP-запрос в объект и создает жизненный цикл сервлета и управляет им.

Java EE - это набор спецификаций, которые используются для решения корпоративных проблем, таких как безопасность, масштабируемость, надежность, доступность и т. Д.

Контейнер, который управляет каждой спецификацией Java EE, известен как корпоративный контейнер Java.Например.Glassfish, JBoss и т. д. (Кстати, Tomcat - это не EE-контейнер, а веб-контейнер)

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

"Контейнеры - это интерфейс между компонентом и низкоуровневой платформо-зависимой функциональностью, которая поддерживает компонент. Перед выполнением веб-компонента, корпоративного компонента или клиентского компонента приложения его необходимо собрать в модуль Java EEи развернут в свой контейнер ".вот мой источник: http://docs.oracle.com/javaee/1.4/tutorial/doc/Overview3.html

1 голос
/ 02 ноября 2016

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

0 голосов
/ 17 января 2017

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

Ref- https://www.techopedia.com/definition/4252/container-java

...