2015-02-20 9 views
3

Мы развертываем наше приложение JavaEE 7 на Wildfly 8. Ранее мы упаковывали все наши корпоративные приложения (WAR, несколько файлов JAR JJB) в качестве EAR. Однако, когда JavaEE теперь позволяет вам упаковывать EJB в WAR-файл (или как JAR в WEB-INF/lib в WAR), нам интересно, есть ли какие-либо выгоды при развертывании EAR, а не в использовании WAR-упаковки.Преимущества использования EAR против WAR?

Предоставляет ли EAR что-то, чего нет у WAR? Это, безусловно, снижает сложность упаковки, чтобы использовать WAR. Есть ли разница в сроках развертывания? Именование EJB? Что-нибудь?

ответ

4
  • Легче развертывать (только один пакет вместо кратных).
  • Некоторые серверы (например, Weblogic, но не wildfly) позволяют общий сеанс для всего EAR.
  • В общем, EAR предоставляет больше возможностей для настройки с AS.
  • Специальная папка (APP-INF), которая позволяет вам определить файл конфигурации application.xml.

Если ваша заявка будет состоять только из нескольких ВОЙН, то вы не можете столкнуться с такой большой проблемой для поддержки нескольких развертываний. Однако рассмотрите приложение, в котором используются WARs, EJB, JMS и т. Д. Будет намного проще управлять взаимодействием между всеми этими компонентами в EAR.

Возможно, вы захотите прочитать часть учебника Java EE packaging application.

+1

Я не понимаю, почему это правильный ответ. Я думаю, что определенно проще упаковать все в одну WAR и развернуть, чем создавать несколько модулей и упаковывать их в один EAR. Зачем использовать несколько WAR? По крайней мере, вопрос касается только одной ВОЙНЫ. Кроме того, ссылка относится к j2ee 6, вопрос относится к j2ee 7. – aschoerk

+0

@aschoerk Согласовано. Просто добавляя мои два цента, я не знаю, почему кто-то хочет больше одной ВОЙНЫ, потому что если вы используете JSF (даже без JSF), вы можете поместить представления в JAR, на которые ссылается WAR (в мультимодульном maven проект). – julianomqs

0

Настройка развертывания EAR - это тяжелая работа (особенно в Weblogic). Развертывание WAR проще. Развертывание как EAR имеет два преимущества:

  1. Вы можете объединить несколько несвязанных приложений в один файл (целые яйца в одной корзине).
  2. Вы можете уменьшить размер этого файла с помощью тощей военной техники.
  3. В ваших devops можно развернуть только одно приложение вместо нескольких. Восстановление ссылок не требуется.
  4. Вы можете установить барьер для сборки скважины между модулями ушей.

И многие другие.

Другими словами однообразный образец в большинстве случаев предназначен только для целей тестирования и обучения.

+0

Используя WAR, вы можете поместить библиотеки внутри сервера приложений в виде модулей и пометить их как предоставленную область в pom, уменьшив размер WAR. Я делал это много раз успешно, в WildFly и Payara (Glassfish). – julianomqs

+0

@julianomqs Это очень-очень-очень плохая практика. Вы знаете, что размер уха не имеет значения. Как вы планируете вычислять целые предметы? Это настоящая головная боль. Оглядываясь назад, я понимаю, что EAR - лучший способ разработать большое приложение. –

Смежные вопросы