.warファイルと.earファイルの違いは何ですか?
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にデプロイされます。
WAR(Web Archive) は、Java Application ServerのWebコンテナにロードされるモジュールです。 Java Application Serverには2つのコンテナー(ランタイム環境)があります。1つはWebコンテナー、もう1つはEJBコンテナーです。
Webコンテナ はJSPまたはサーブレットAPIに基づいてWebアプリケーションをホストします。特にWeb要求処理用に設計されています。したがって、request/responseスタイルの分散コンピューティングになります。 Webコンテナでは、Webモジュールを WARファイル - としてパッケージ化する必要があります。これは、web.xml
フォルダにWEB-INF
ファイルがある特別なJARファイルです。
EJBコンテナ hosts宣言型トランザクション、宣言型メソッドレベルのセキュリティ、マルチプロトコルサポートなどの拡張ビジネス機能を提供するように設計されたEJB APIに基づくエンタープライズJavaBeans - さらにRPCスタイルの分散コンピューティング 。 EJBコンテナでは、EJBモジュールを JARファイルとしてパッケージ化する必要があります - これらはejb-jar.xml
フォルダにMETA-INF
ファイルがあります。
エンタープライズアプリケーション は、Webモジュール(WARファイルとしてパッケージ化されている)、EJBモジュール(JARファイルとしてパッケージ化されている)、またはその両方になることができる1つ以上のモジュールで構成されます。エンタープライズアプリケーションは EARファイルとしてパッケージされています - これらはapplication.xml
フォルダにMETA-INF
ファイルを含む特別なJARファイルです。
基本的に、 EARファイル はWARファイルとJARファイルを含むスーパーセットです。 Javaアプリケーションサーバーでは、WARファイルにスタンドアロンWebモジュールをデプロイできますが、内部的にはWARファイルのラッパーとしてEARファイルが作成されます。 Tomcat や Jetty などのスタンドアロンWebコンテナはEARファイルをサポートしていません - これらは本格的なアプリケーションサーバーではありません。これらのコンテナ内のWebアプリケーションは、WARファイルとしてのみデプロイされます。
アプリケーションサーバーでは、EARファイルに、アプリケーションセキュリティロールマッピング、EJB参照マッピング、WebモジュールのコンテキストルートURLマッピングなどの設定が含まれています。
WebモジュールおよびEJBモジュールとは別に、EARファイルには、RARファイルとしてパッケージ化されたコネクタモジュールとJARファイルとしてパッケージ化されたクライアントモジュールも含めることができます。
戦争 - ウェブアーカイブ。サーブレット標準に従ってWebアプリケーションをデプロイするために使用されます。これはWEB-INFと呼ばれる特別なディレクトリとその中のいくつかのファイルとディレクトリ(web.xml、lib、クラス)、そしてWebアプリケーションのすべてのHTML、JSP、画像、CSS、JavaScriptと他のリソースを含むjarファイルです
耳 - 企業アーカイブ。 EJB、Webアプリケーション、およびサードパーティのライブラリを含むエンタープライズアプリケーションをデプロイするために使用されます。これはjarファイルでもあり、application.xmlファイルを含むAPP-INFという特別なディレクトリがあり、jarファイルとwarファイルがあります。
WAR(Webアーカイブ)ファイルには、サーブレットクラスファイル、JSP(Javaサーブレットページ)、HTMLファイル、グラフィカルファイル、その他のサポートファイルが含まれています。
EAR(エンタープライズアーカイブ)ファイルには、コードを含むJARファイルとともにWARファイルが含まれています。
これらのファイルには他のものもあるかもしれませんが、それらは基本的にそれらが意味するように聞こえるもののためのものを意味しています。
参照してください: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar(tape archives) - 使用されるフォーマットは、fileName、fileSize、fileDataのシリアル単位で書き込まれたファイルです - 圧縮なし。巨大になることができます
Jar(Javaアーカイブ) - 使用される圧縮技術 - 一般的にクラス/ JavaファイルのようなJava情報が含まれています。しかし、任意のファイルとディレクトリ構造を含めることができます
war(Webアプリケーションアーカイブ) - デプロイメント目的のJSP /サーブレット仕様に従って、jarファイルのような同様のものだけが特定のディレクトリ構造を持ちます。
ear(enterprise archives) - jarファイルと似ています。 J2EEの要件に従ったディレクトリ構造を持ち、J2EEアプリケーションサーバーにデプロイできるようにします。 - 複数のJARファイルとWARファイルを含めることができます
JARファイル
JAR(Java Archiveの略)ファイルでは、複数のファイルを1つにまとめることができます。 '.jar'を持つファイル拡張機能は、Javaクラスやさまざまなメタデータを配布するためにソフトウェア開発者によって利用されます。これらには、ライブラリやリソースファイル、およびアクセサリファイル(プロパティファイルなど)も含まれています。
ユーザーは、Java Development Kit(JDK)の '.jar'コマンドを使用してJARファイルを抽出および作成できます。ジップツールも使用できます。
JARファイルにはオプションのマニフェストファイルがあります。マニフェストファイル内のエントリは、JARファイルの用途を規定します。ファイルクラスの「メイン」クラス指定は、そのファイルを独立型プログラムまたは「スタンドアロン」プログラムとして表します。
WARファイル
WAR(またはWebアプリケーションアーカイブ)ファイルには、XML(拡張マークアップ言語)ファイル、Javaクラス、およびインターネットアプリケーション用のJava Serverページを含めることができます。 Webアプリケーションを構成するライブラリやWebページをマークするためにも使用されます。拡張子が「.war」のファイルには、サーバーコンテナまたはJSP(Java Server Page)コンテナで使用するWebアプリケーションが含まれています。 JSP、HTML(Hypertext Markup Language)、JavaScript、および前述のWebアプリケーションを作成するためのさまざまなファイルがあります。
WARファイルは、特別なディレクトリやファイルを考慮して構成されています。コードの正確性を示すために、デジタル署名(JARファイルの署名とよく似ている)もあります。
EARファイル
EAR(Enterprise Archive)ファイルはJARファイルとWARファイルを単一のアーカイブにマージします。拡張子が「.ear」のこれらのファイルには、メタデータ用のディレクトリがあります。モジュールは、アプリケーションサーバー内のさまざまなモジュールを円滑かつ同時に操作するためにアーカイブにパッケージ化されています。
EARファイルには、さまざまなモジュールのデプロイメントを効果的に指示するデプロイメント記述子(XMLファイル)もあります。
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>
これにより、アプリケーションとアプリケーションサーバーの間でクラスローダーの競合がなくなります。
通常、クラスローダーのメカニズムは次のように機能します。
クラスローディング要求がクラスローダに提示されると、まずクラスローダにその要求を実行するように要求します。要求が階層の最上位に達するまで、親はその親にクラスを要求します。階層の最上位にあるクラスローダーが要求を実行できない場合は、それを呼び出した子クラスローダーがクラスのロードを担当します。
クラスローダーを分離することによって、あなたの耳のクラスローダーは親を見ないでしょう(= JBoss /他のASクラスローダー)。私の知る限りでは、これはwarファイルでは不可能です。
J2EEでは、3種類のアーカイブを定義しています。
Java Archives(JAR) JARファイルは、1つ以上のJavaクラス、マニフェスト、および記述子をカプセル化します。 JARファイルは最低レベルのアーカイブです。 JARファイルは、EJBおよびクライアントサイドのJavaアプリケーションをパッケージ化するためにJ2EEで使用されます。
Web Archives(WAR) WARファイルはJARファイルに似ていますが、サーブレット、JSP、およびサポートクラスから作成されたWebアプリケーション専用です。
エンタープライズアーカイブ(EAR) "EARファイルには、特定のJ2EEアプリケーションを構成するすべてのコンポーネントが含まれています。
プロジェクトを移送するために、配置が簡単になりました。 1つのファイルに圧縮する必要があります。 .classファイルのJAR(Javaアーカイブ)グループ
WAR(Webアーカイブ) - 各戦争は1つのWebアプリケーションを表します - サーブレットのようなWeb関連技術のみを使用してください。jspを使用できます。 - Tomcatサーバー上で実行可能 - Web関連技術によって開発されたWebアプリのみjspサーブレットhtml js - 情報表示のみトランザクションなし。
EAR(企業アーカイブ) - それぞれの戦争は一つの企業アプリケーションを表します - 私たちはejbのようなj2eeから何でも使うことができます、jmsは喜んで使うことができます。 - Tomcatサーバーではなく、Glassfishのように実行できます。 - すべてのWebアプリに加えてejbs jmsなどのようなj2eeからの任意の技術によって開発されたエンタープライズアプリ - 情報表現とのトランザクションを行います。例えば。銀行アプリ、テレコムアプリ