.war対.earファイル


566

.warファイルと.earファイルの違いは何ですか?


2
詳細について.JAR, .WAR and .EARは、ビデオチュートリアルもご覧ください。それは非常にシンプルで理解しやすいです。それは何であるかを説明します差異の間.JAR、.WARおよび.EAR ビデオチュートリアル.JAR、.WARおよび.EARの違い
バーティRawat

2
誰かが.zip拡張子の付いたzipファイルを残すことは十分にエンタープライズではないので、最終的に移動先に基づいて.jar / .earまたは.warに名前を変更する必要があると誰かが思ったJavaの世界へようこそ。
ピスタッキオ

回答:


492

GeekInterviewから:

J2EEアプリケーションでは、モジュールは機能に基づいてEAR、JAR、WARとしてパッケージ化されます

JAR:エンタープライズJava Bean(クラスファイル)とEJBデプロイメント記述子を含むEJBモジュールは、拡張子が.jarのJARファイルとしてパックされます。

WAR:サーブレットクラスファイル、JSPファイル、サポートファイル、GIFおよびHTMLファイルを含むWebモジュールは、.war(Webアーカイブ)拡張子を持つJARファイルとしてパッケージ化されます

EAR:上記のすべてのファイル(.jarおよび.war)は、拡張子が.ear(エンタープライズアーカイブ)のJARファイルとしてパッケージ化され、Application Serverに配備されます。


63
この投稿は、EARが大きなEARのJARSとWARSの両方であると私に思わせますが、これはそれほど単純ではないと思います。
LayGonzález

4
本質的にはすべてArchive(JAR)ですが、その性質/コンテンツを暗示するために異なる拡張子が付いています。
KNU 2014年

1
ほとんどの場合、BeanのEARおよび個別のJARは不要です。すべてのクラスが1つのアーカイブにある単純なWARは正常です。これはより詳細な説明です:adam-bien.com/roller/abien/entry/ears_wars_and_size_matters
Kaspars Rinkevics

599

WAR(Webアーカイブ)が上にロードされるモジュールであるWebコンテナJavaアプリケーションサーバー。Java Application Serverには2つのコンテナー(ランタイム環境)があります。1つはWebコンテナーで、もう1つはEJBコンテナーです。

Webコンテナ JSPやサーブレットAPIに基づいて、ホストのWebアプリケーションは、 - Webリクエストの処理のために特別に設計された-ので、より多くの分散コンピューティングの要求/応答スタイル。Webコンテナーを使用するには、WebモジュールをWARファイルとしてパッケージ化する必要web.xmlがありWEB-INFます。これは、フォルダー内にファイルを含む特別なJARファイルです。

EJBコンテナので、より多くの-な宣言型トランザクション、宣言型のメソッドレベルのセキュリティとマルチプロトコルサポートなどの拡張ビジネス機能を提供するために設計されたEJB APIに基づいホストエンタープライズJava Beanの分散コンピューティングのRPCスタイルを。EJBコンテナでは、EJBモジュールをJARファイルとしてパッケージ化する必要があります -これらはフォルダ内にejb-jar.xmlファイルを持っていMETA-INFます。

エンタープライズアプリケーションは、Webモジュール(WARファイルとしてパッケージ化)、EJBモジュール(JARファイルとしてパッケージ化)、またはその両方のいずれかである1つ以上のモジュールで構成できます。エンタープライズアプリケーションは、次のようにパッケージ化されているEARファイル -これらは含む特別なJARファイルですapplication.xml内のファイルMETA-INFフォルダを。

基本的に、EARファイルWARファイルJARファイルを含むスーパーセットです。Javaアプリケーションサーバーでは、スタンドアロンのWebモジュールをWARファイルにデプロイできますが、内部では、WARファイルのラッパーとしてEARファイルを作成します。TomcatJettyなどのスタンドアロンWebコンテナはEARファイルをサポートしていません。これらは本格的なアプリケーションサーバーではありません。これらのコンテナー内のWebアプリケーションは、WARファイルとしてのみデプロイされます。

アプリケーションサーバーでは、EARファイルには、アプリケーションセキュリティロールマッピング、EJB参照マッピング、WebモジュールのコンテキストルートURLマッピングなどの構成が含まれています。

EARファイルには、WebモジュールとEJBモジュールの他に、RARファイルとしてパッケージ化されたコネクタモジュールと、JARファイルとしてパッケージ化されたクライアントモジュールを含めることもできます。


32
+1は、この回答で、どちらか一方を使用する理由を説明しているためです。
Jason Wheeler

7
はい@KNU、 .jar.warおよび.earファイルはこのように、普通た.zipファイルを扱うことができる任意のプログラムで開くことができ、単純なzipアーカイブです。
acdcjunior 2014年

41

war-Webアーカイブ。サーブレット標準に従ってWebアプリケーションをデプロイするために使用されます。これは、WEB-INFと呼ばれる特別なディレクトリとその中のいくつかのファイルとディレクトリ(web.xml、lib、classes)、およびすべてのHTML、JSP、画像、CSS、JavaScript、およびWebアプリケーションの他のリソースを含むjarファイルです。

耳-エンタープライズアーカイブ。これは、EJB、Webアプリケーション、およびサードパーティライブラリを含むエンタープライズアプリケーションをデプロイするために使用されます。これはjarファイルでもあり、application.xmlファイルを含むAPP-INFと呼ばれる特別なディレクトリがあり、jarファイルとwarファイルが含まれています。


APP-INFディレクトリの代わりにMETA-INFを意味しましたか?
ザバエル

26

WAR(Webアーカイブ)ファイルには、サーブレットクラスファイル、JSP(Javaサーブレットページ)、HTMLおよびグラフィカルファイル、およびその他のサポートファイルが含まれています。

EAR(エンタープライズアーカイブ)ファイルには、WARファイルとコードを含むJARファイルが含まれています。

それらのファイルには他のものが含まれている可能性がありますが、基本的には、WebタイプのもののWAR、エンタープライズタイプのもののWAR(WAR、コード、コネクタなど)を意味しています。


2
私の場合、私は常にWEB-INF / libフォルダーにjarを含むWARをデプロイし、それが機能します。では、なぜEARアーカイブを使用する必要があるのですか?
swapyonubuntu 2015

2
@swapyonubuntu、単一のWebアプリケーション(より具体的には、単一のサーブレットコンテキスト)をデプロイするだけの場合、WARファイルを実行するだけで問題はありません。EARファイルは、多くのWebアプリを含む、本格的なエンタープライズアプリに最適です。
paxdiablo 2015

1
このマイクロサービスの時代では、各WARを1つのEARにバンドルするのではなく、完全に分離して個別にデプロイする方が理にかなっているのではないでしょうか。
Sayo Oladeji、2015年

18

JARファイル

JAR(Java Archiveの略)ファイルでは、複数のファイルを1つのファイルに結合できます。「.jar」を含むファイル。拡張機能は、Javaクラスおよびさまざまなメタデータを配布するためにソフトウェア開発者によって利用されます。これらには、ライブラリやリソースファイル、およびアクセサリファイル(プロパティファイルなど)も保持されます。

ユーザーは、Java Development Kit(JDK)の「.jar」コマンドを使用してJARファイルを抽出および作成できます。ZIPツールも使用できます。

JARファイルには、オプションのマニフェストファイルがあります。マニフェストファイル内のエントリは、JARファイルの使用を規定します。ファイルクラスの「メイン」クラス仕様は、ファイルを分離または「スタンドアロン」プログラムとして示します。

WARファイル

WAR(またはWebアプリケーションアーカイブ)ファイルは、XML(拡張マークアップ言語)ファイル、Javaクラス、およびインターネットアプリケーション用のJavaサーバーページで構成できます。また、Webアプリケーションを構成するライブラリやWebページをマークするためにも使用されます。拡張子が「.war」のファイルには、サーバーまたはJSP(Java Server Page)コンテナーで使用するWebアプリが含まれています。JSP、HTML(ハイパーテキストマークアップ言語)、JavaScript、および前述のWebアプリを作成するためのさまざまなファイルが含まれています。

WARファイルは、特別なディレクトリとファイルを許可するように構成されています。また、コードの真実性を示すために、デジタル署名(JARファイルの署名とよく似ています)が含まれている場合もあります。

EARファイル

EAR(エンタープライズアーカイブ)ファイルは、JARファイルとWARファイルを1つのアーカイブにマージします。拡張子が「.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(Webアプリケーションアーカイブ)-同様のjarファイルには、デプロイメントの目的で、JSP /サーブレット仕様に従って特定のディレクトリ構造しかありません。

ear(エンタープライズアーカイブ)-jarファイルと同様。J2EEアプリケーションサーバーにデプロイできるように、J2EE要件に従うディレクトリ構造を持っている。-複数のJARおよびWARファイルを含めることができます


6

EARファイルには、アプリケーションサーバーとの対話を構成するためのより多くのオプションがあります。

例:アプリケーションサーバーの休止バージョンが依存関係によって提供されるバージョンより古い場合、JBOSSのear-deployer-jboss-beans.xmlに以下を追加してクラスローダーを分離し、競合を回避できます。

<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> 

これにより、アプリケーションとアプリケーションサーバーの間でクラスローダーの競合が発生しなくなります。

通常、クラスローダーのメカニズムは次のように機能します。

クラス・ロード要求がクラス・ローダーに提示されると、最初にその要求を実行するように親クラス・ローダーに要求します。親は、要求が階層の最上位に到達するまで、親にクラスを要求します。階層の最上位にあるクラスローダーがリクエストを実行できない場合、それを呼び出した子クラスローダーがクラスのロードを担当します。

クラスローダーを分離することにより、earクラスローダーは親(= JBoss /他のASクラスローダー)を調べません。私の知る限り、これはwarファイルでは不可能です。


KNU:受け入れられた回答に記載されている「サーブレットクラスファイル、JSPファイル、サポートファイル、GIFおよびHTMLファイルが含まれている」ため、このearファイルの使用は、単にそれを使用するよりも有効です。warファイルにはgif、html、jsp、サーブレットなども含まれる可能性があるため、誰もが「彼の強みに答えた」場合、おそらく私たち全員が当面の問題についてより賢明になるでしょう。
マーク・

Mavenはあなたのためにそれをしませんか?バージョンごとに依存関係を指定でき、/ libフォルダーに含まれます。(戦争ファイル内)
セバス

そうですが、アプリケーションサーバー/サーブレットコンテナーは、libフォルダー内のこれらを、自分のlibフォルダー内で提供するlibでオーバーライドすることを選択できます。これはそれを防ぐことができます。それはすべて、使用されるクラスローディングメカニズムに依存します。
Mark

6

J2EEは3つのタイプのアーカイブを定義します。

  1. Java Archives(JAR) JARファイルは、1つ以上のJavaクラス、マニフェスト、および記述子をカプセル化します。JARファイルは最低レベルのアーカイブです。JARファイルは、EJBとクライアント側のJavaアプリケーションをパッケージ化するためにJ2EEで使用されます。

  2. Webアーカイブ(WAR) WARファイルはJARファイルに似ていますが、サーブレット、JSP、およびサポートクラスから作成されたWebアプリケーション専用です。

  3. エンタープライズアーカイブ(EAR)「EARファイルには、特定のJ2EEアプリケーションを構成するすべてのコンポーネントが含まれています。


0

プロジェクトを移送するために、導入が簡単になりました。1つのファイルに圧縮する必要があります。.classファイルのJAR(Javaアーカイブ)グループ

WAR(Webアーカイブ)-各warは1つのWebアプリケーションを表します-サーブレットやjspsなどのWeb関連テクノロジーのみを使用できます。-Tomcatサーバーで実行できます-Web関連テクノロジーによって開発されたWebアプリのみjspサーブレットhtml js-情報表現のみでトランザクションはありません。

EAR(エンタープライズアーカイブ)-各earは1つのエンタープライズアプリケーションを表します。ejbやjmsなどのj2eeから何でも使用できます。-Tomcatサーバーではなく、Glassfishのようなサーバーで実行できます。-すべてのWebアプリに加えてejbs jmsなど、j2eeからのテクノロジーによって開発されたエンタープライズアプリ-情報表現を使用してトランザクションを実行します。例えば。銀行アプリ、通信アプリ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.