Зачем использовать ухо вместо войны? - PullRequest
16 голосов
/ 21 октября 2011

Я прочитал это и это , которые в некоторой степени связаны с моим вопросом. Но я наткнулся на эту статью, в которой говорится, что EJB-файлы могут быть упакованы в файл военных действий. Если это так, зачем нужно ухо? Объяснение с примером будет высоко ценится.

Ответы [ 3 ]

8 голосов
/ 15 октября 2012

Использование EAR обеспечивает четкое разделение между бизнес-объектами (как правило, EJB EJB-компонентами, не имеющими состояния, которые предоставляют серверные / связанные с БД услуги и в принципе могут использоваться не-веб-клиентами) и front-end (файлы xhtml, компоненты поддержки JSF и т. д.).

Я обычно следую приведенному ниже соглашению для данного проекта, скажем "foo":

  • foo-ejb.jar имеет EJB-компоненты
  • foo-client.jar определяет интерфейс EJB-компонентов (' client ' может бытьнеправильное название, ' foo-if.jar ' или ' foo-api.jar ' могут быть более подходящими именами)
  • foo-war.war имеет веб-ресурсы

Building foo-war.war требуется только foo-client.jar

Building foo-ejb.jar требуется только foo-client.jar .

Структура в EAR:

foo.ear
 |
 |-- foo-war.war
 |
 |-- foo-ejb.jar
 |
 \-- lib
      |---- foo-client.jar
      |
      \---- (other common jars)

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

8 голосов
/ 21 октября 2011

Использование EAR или WAR зависит от сервера, на котором вы хотите его развернуть, вашего приложения и ваших личных предпочтений. Из Java EE6 вы можете упаковать ваши EJB вместе с другими сервлетами, jsps и т. Д. В файл WAR (в итоге вы получите веб-приложение, которое вы можете развернуть только на сервере, совместимом с java ee 6). Если вы упаковываете свое приложение по-старому с помощью ejbs в отдельный пакет и используете war отдельно, вы можете использовать сервер java ee 5, если вы не использовали другие функции java ee6 в своем приложении, вы можете разделить развертывание ваших EJB и WAR иметь четкое разделение вашего бизнес-уровня (EJB) и вашего представления (сервлеты, JSP и т. д.).

2 голосов
/ 01 ноября 2014

Платформа Java EE использует модель распределенных многоуровневых приложений для корпоративных приложений. Логика приложения подразделяется на компоненты в зависимости от функции, а компоненты приложения, составляющие приложение Java EE, устанавливаются на различных компьютерах в зависимости от уровня в многоуровневой среде Java EE, к которой принадлежит компонент приложения.

Изображение внизу показывает два многоуровневых приложения Java EE, разделенных на уровни, описанные в следующем списке. Части приложения Java EE, показанные на этом изображении, представлены в компонентах Java EE.

  • Компоненты клиентского уровня выполняются на клиентском компьютере.

  • Компоненты веб-уровня работают на сервере Java EE.

  • Компоненты бизнес-уровня работают на сервере Java EE.

  • На EIS работает программное обеспечение корпоративной информационной системы (EIS)
    сервер.

Хотя приложение Java EE может состоять из всех уровней, показанных на рис. 1-1, многоуровневые приложения Java EE обычно рассматриваются как трехуровневые приложения, поскольку они распределены по трем местоположениям: клиентские машины, машина сервера Java EE, и база данных или устаревшие машины на заднем конце. Трехуровневые приложения, которые работают таким образом, расширяют стандартную двухуровневую модель клиент-сервер, размещая многопоточный сервер приложений между клиентским приложением и внутренним хранилищем.

Multitiered Applications

Поэтому обычно мы хотим иметь 2 или 3 отдельных слоя:

-EAR ( E Приложение для бизнеса AR зубок чеснока)

-EJB ( E nterprise J ava B eans)

-WAR ( W eb AR зубок чеснока)

и иногда JPA ( J ava P ersistance A PI)

Надеюсь, вы найдете это полезным, Спасибо.

...