.war vs .ear file


566

Яка різниця між файлом .war та .ear?


2
Щоб дізнатися більше про те, .JAR, .WAR and .EARви також можете ознайомитись з відеоуроком. Це дуже просто або більш зрозуміло. Він пояснить , що це різниця між .JAR, .WAR і .ear відео - підручник : різниця між .JAR, .WAR і .ear
Бхарти Рават

2
Ласкаво просимо у світ Java, де хтось подумав, що залишити zip-файл із розширенням .zip недостатньо підприємницько, тому його потрібно перейменувати на .jar / .ear або .war залежно від того, куди ви його пересунете.
фісташка

Відповіді:


492

З GeekInterview :

У додатку J2EE модулі пакуються як EAR, JAR та WAR на основі їх функціональності

JAR: Модулі EJB, які містять файли Java Java (файли класів) та дескриптор розгортання EJB, упаковуються у вигляді файлів JAR з розширенням .jar

ВІЙНА: Веб-модулі, що містять файли класу Servlet, файли JSP, допоміжні файли, файли GIF та HTML, упаковуються у вигляді файлу JAR з розширенням .war (веб-архів)

EAR: Усі вищезазначені файли (.jar та .war) упаковуються у вигляді файлу JAR з розширенням .ear (корпоративний архів) та розгортаються у сервері прикладних програм.


63
Ця публікація змушує мене думати, що EAR - це як JARS, так і WARS разом у великому EAR, що, на мою думку, не так просто.
Закладіть Гонсалес

4
Всі вони по суті є архівом (JAR), але з різним розширенням мають на увазі їх природу / зміст.
КНУ

1
EARs та окремі JARs для бобів у більшості випадків непотрібні. Проста ВІЙНА з усіма класами в одному архіві - це нормально. Ось більш детальне пояснення: adam-bien.com/roller/abien/entry/ears_wars_and_size_matters
Kaspars

599

WAR (Web Archive) являє собою модуль , який завантажується в веб - контейнер у вигляді Application Server Java . Сервер додатків Java має два контейнери (середовища виконання) - один - контейнер Web, а другий - контейнер EJB.

У веб-контейнері розміщені веб-програми, засновані на JSP або API сервлетів - розроблені спеціально для обробки веб-запитів - так більше стиль запиту / відповіді розподілених обчислень . Веб-контейнер вимагає упаковки веб-модуля у вигляді файлу WAR - це спеціальний файл JAR з web.xmlфайлом у WEB-INFпапці.

У контейнері EJB розміщуються Java-боби Enterprise на основі API EJB, розроблені для забезпечення розширеної бізнес-функціональності, такої як декларативні транзакції, захист рівня декларативного методу та підтримка мультипротоколу - так більше стилю RPC розподілених обчислень . Контейнери EJB вимагають упаковки модулів EJB у вигляді файлів JAR - вони мають ejb-jar.xmlфайл у META-INFпапці.

Корпоративні програми можуть складатися з одного або декількох модулів, які можуть бути або веб-модулями (упакованими у вигляді файлу WAR), модулями EJB (упакованими у вигляді файлу JAR) або обома ними. Корпоративні програми упаковуються у вигляді файлів EAR - це спеціальні файли JAR, що містять application.xmlфайл у META-INFпапці.

Фактично, файли EAR - це суперсеть, що містить файли WAR та файли JAR . Сервери додатків Java дозволяють розгортати окремі веб-модулі у файлі WAR, хоча вони внутрішньо створюють файли EAR як обгортку навколо файлів WAR. Автономні веб-контейнери, такі як Tomcat та Jetty , не підтримують файли EAR - це не повноцінні сервери додатків. Веб-програми в цих контейнерах мають бути розгорнуті лише у форматі WAR.

На серверах прикладних програм файли EAR містять такі конфігурації, як відображення ролей у захисті додатків, відображення посилань EJB та відображення кореневих URL-адрес корінних веб-модулів.

Крім веб-модулів та модулів EJB, файли EAR також можуть містити з'єднувальні модулі, упаковані у вигляді файлів RAR, та клієнтські модулі, упаковані у вигляді файлів JAR.


32
+1, оскільки ця відповідь описує, чому ви можете використовувати те чи інше.
Джейсон Уілер

7
@KNU так, .jar, .warі .earфайли прості поштові архіви, таким чином , може бути відкрита будь-яка програма , яка може обробляти звичайні файли .zip.
acdcjunior

41

war - веб-архів. Він використовується для розгортання веб-додатків відповідно до стандарту сервлетів. Це jar-файл, що містить спеціальний каталог під назвою WEB-INF та декілька файлів і каталогів всередині нього (web.xml, lib, класів), а також усі HTML, JSP, зображення, CSS, JavaScript та інші ресурси веб-програми

вухо - архів підприємств. Він використовується для розгортання корпоративного додатка, що містить EJB, веб-додатки та сторонні бібліотеки. Це також jar-файл, у ньому є спеціальний каталог під назвою APP-INF, який містить файл application.xml, і він містить файли jar та war.


ви мали на увазі META-INF замість каталогу APP-INF?
Заваел

26

Файли WAR (веб-архіву) містять файли класу сервлетів, JSP (сторінки сервлетів Java), HTML та графічні файли та інші підтримуючі файли.

Файли EAR (архів підприємств) містять файли WAR разом з файлами JAR, що містять код.

У цих файлах можуть бути й інші речі, але вони в основному призначені для того, що вони звучать так, як вони означають: ВІЙНА для матеріалів веб-типу, EAR для речей типу корпоративного типу (WARs, code, connectors тощо).


2
У моєму випадку я завжди розгортаю WAR з банками в папці WEB-INF / lib, і це працює. То чому я повинен використовувати архів EAR?
swapyonubuntu

2
@swapyonubuntu, якщо ви просто розгортаєте одну веб-програму (точніше, один контекст сервлета), нічого поганого в тому, щоб робити файли WAR. Файли EAR набагато кращі для повномасштабних корпоративних програм, включаючи файли з багатьма веб-програмами.
paxdiablo

1
Чи не було б у цю епоху мікросервісів більше сенсу тримати кожну ВІЙНУ повністю окремо та розгортати окремо, а не з’єднувати їх разом у монолітний ЗНО?
Sayo Oladeji

18

Файли JAR

Файл JAR (короткий для Java Archive) дозволяє поєднувати кілька файлів в один. Файли з '.jar'; розширення використовуються розробниками програмного забезпечення для розповсюдження Java-класів та різних метаданих. Вони також містять бібліотеки та файли ресурсів, а також файли аксесуарів (наприклад, файли властивостей).

Користувачі можуть витягувати та створювати файли JAR за допомогою команди ".jar" Java Development Kit (JDK). Також можуть використовуватися інструменти ZIP.

Файли JAR мають додаткові файли маніфестів. Записи у файлі маніфесту визначають використання файлу JAR. Основна специфікація класу файлів позначає файл як окрему або «окрему» програму.

Файли війни

Файли WAR (або архіву веб-додатків) можуть містити файли XML (розширювана мова розмітки), класи Java, а також сторінки сервера Java для цілей Інтернет-додатків. Він також використовується для маркування бібліотек та веб-сторінок, які складають веб-додаток. Файли з розширенням '.war' містять веб-додаток для використання із серверами або контейнерами JSP (Java Server Page). Він має JSP, HTML (мова розмітки гіпертексту), JavaScript та різні файли для створення вищезгаданих веб-додатків.

Файл WAR структурований як такий, щоб створити спеціальні каталоги та файли. Він також може мати цифровий підпис (подібний до файлу JAR), щоб показати правдивість коду.

Файли EAR

Файл EAR (Enterprise Archive) об'єднує файли JAR і WAR в єдиний архів. Ці файли з розширенням '.ear' мають каталог метаданих. Модулі упаковані в архів для плавної та одночасної роботи різних модулів на сервері додатків.

У файлі EAR також є дескриптори розгортання (це файли XML), які ефективно диктують розгортання різних модулів.

введіть тут опис зображення


1
повинна бути найкращою відповіддю просто за відмінну графіку, дякую, чудова допомога!
fl0w

12

Посилання: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html

tar (стрічковий архів) - Формат, що використовується, - це файл, записаний у послідовних одиницях fileName, fileSize, fileData - без стиснення. може бути величезним

Jar (архів java) - використовувані методи стиснення - зазвичай містять інформацію Java, наприклад, файли класу / java. Але може містити будь-які файли та структуру каталогів

war (архіви веб-додатків) - подібні файли jar мають лише специфічну структуру каталогів відповідно до специфікації JSP / Servlet для розгортання

вухо (корпоративний архів) - схожий на файли jar. мати структуру каталогів, що відповідає вимогам J2EE, щоб її можна було розгорнути на серверах прикладних програм J2EE. - може містити кілька файлів JAR та WAR


6

Вушні файли надають більше варіантів налаштування взаємодії з сервером додатків.

Наприклад: якщо спляча версія сервера додатків є старшою, ніж надана вашими залежностями, ви можете додати наступне в ear-exploler-jboss-beans.xml для JBOSS для ізоляції завантажувачів класів та уникнення конфліктів:

<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">    
  <property name="isolated">true</property>
</bean>

або до src / main / application / META-INF / jboss-app.xml:

<?xml version="1.0"?>
<jboss-app>
<loader-repository>
    loader=nameofyourear.ear
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</jboss-app> 

Це дозволить переконатися, що між вашою програмою та сервером додатків немає конфлікту між завантажувачем.

Зазвичай механізм завантажувача класів працює так:

Коли запит на завантаження класу подається завантажувачу класу, він спочатку просить його батьківський завантажувач класів виконати запит. Батько, у свою чергу, запитує свого батька для класу, поки запит не досягне вершини ієрархії. Якщо завантажувач класів у верхній частині ієрархії не може виконати запит, то за завантаження класу відповідає відповідальний завантажувач класів, який його назвав.

Виділяючи завантажувачі класів, ваш вуховий навантажувач не буде виглядати у батьківському (= JBoss / інший AS-завантажувач). Наскільки я знаю, це неможливо з файлами війни.


КНУ: Це використання вушного файлу більш справедливе, ніж просто його використання, оскільки "воно містить файли класу Servlet, файли JSP FI, ​​підтримуючі файли, файли GIF та HTML", як зазначено у прийнятій відповіді. Оскільки файли війни також можуть містити gif, html, jsp, servlets, ... Якщо кожен "відповів би на свій розсуд", можливо, всі ми могли б стати мудрішими з цього питання.
Марк

Мейвен робить це для вас ні? Ви можете вказати залежності для кожної версії, і вони будуть включені в папку / lib. (у військовій
справі

Так, але сервер додатків / контейнер сервлетів може вибрати їх замінити в папці lib з libs, які він надає у власній папці lib. Це може запобігти цьому. Все залежить від використовуваного механізму завантаження класів.
Марк

6

J2EE визначає три типи архівів:

  1. Архів Java (JAR) Файл JAR інкапсулює один або декілька класів Java, маніфест та дескриптор. Файли JAR - це найнижчий рівень архіву. Файли JAR використовуються в J2EE для упаковки EJB та Java-додатків на стороні клієнта.

  2. Файли WAR веб-архівів (WAR) схожі на файли JAR, за винятком того, що вони призначені спеціально для веб-додатків із сервлетів, JSP та підтримуючих класів.

  3. Архів підприємств (EAR) ”Файл EAR містить усі компоненти, що складають певну програму J2EE.


0

Щоб перевезти проект, розгортання стало легшим. потрібно стиснути в один файл. Група JAR (архів Java) файлів .class файлів

ВІЙНА (веб-архів) - кожна війна являє собою один веб-додаток - можна використовувати лише ті веб-технології, як сервлет, jsps. - може працювати на сервері Tomcat - веб-додаток, розроблений тільки з веб-пов'язаними технологіями jsp сервлет html js - інформаційне представлення лише без транзакцій.

EAR (корпоративний архів) - кожне вухо представляє одну корпоративну програму - ми можемо використовувати будь-що з j2ee, наприклад ejb, jms може бути щасливим. - може працювати на Glassfish як сервер, а не на сервері Tomcat. - корпоративна програма, розроблена будь-якою технологією, що-небудь від j2ee, як і всі веб-програми плюс ejbs jms тощо - робить транзакції з поданням інформації. напр. Банківська програма, додаток Telecom

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.