2009-10-20 124 views
460

.war和.ear文件有什麼區別?.war和.ear文件

+2

要了解更多關於**'.JAR,.WAR和.EAR' **您還可以看到的視頻教程。這是非常簡單或更容易理解的。它將解釋** .JAR,.WAR **和**。EAR ** **視頻教程**:[.JAR,.WAR和.EAR之間的區別](https: //www.youtube.com/watch?v=ecxIBCu2-b4) – 2016-06-01 05:23:13

+1

因爲演講者沉重的印度口音,我無法觀看該視頻。 – raarts 2017-11-23 09:15:01

回答

431

GeekInterview:包含企業Java Bean(類文件)和EJB EJB模塊:

在J2EE應用程序中,模塊根據各自的功能

JAR打包爲EAR,JAR和WAR部署描述符打包爲帶有.jar擴展名的JAR文件

WAR: 包含Servlet類文件,JSP文件,支持文件,GIF和HTML文件的Web模塊打包爲JAR文件w ith .war(網絡壓縮文件)擴展名

EAR: 以上所有文件(.jar和.war)都打包爲帶有.ear(企業歸檔)擴展名的JAR文件並部署到Application Server中。

+49

這篇文章讓我認爲EAR只是在一個大EAR中同時出現JARS和WARS,我認爲這並不那麼簡單。 – 2014-02-16 02:13:33

+3

所有的本質都是存檔(JAR),但具有不同的擴展以暗示它們的性質/內容。 – KNU 2014-06-05 16:39:48

+1

在大多數情況下,EAR和豆類的單獨JAR是不必要的。一個歸檔中的所有類的簡單WAR是正常的。這是一個更詳細的解釋:http://www.adam-bien.com/roller/abien/entry/ears_wars_and_size_matters – 2017-06-28 07:41:29

24

WAR(網絡歸檔)文件包含servlet類文件,JSP(Java servlet頁面),HTML和圖形文件以及其他支持文件。

EAR(企業歸檔)文件包含WAR文件以及包含代碼的JAR文件。

這些文件中可能還有其他的東西,但它們的基本意思是它們聽起來像它們的意思:Web類型的東西的WAR,企業類型的東西(WARs,代碼,連接器等)的EAR。

+2

在我的情況下,我總是在WAR-jar/WEB-INF/lib文件夾中部署WAR,並且工作正常。那麼,爲什麼我應該使用EAR存檔? – swapyonubuntu 2015-02-21 06:36:26

+2

@swapyonubuntu,如果您只是部署單個Web應用程序(更具體地說,是一個單獨的servlet上下文),那麼僅僅執行WAR文件沒有任何問題。 EAR文件對於成熟的企業應用程序來說更好,包括那些有許多網絡應用程序的應用程序。 – paxdiablo 2015-02-21 09:27:26

+1

在這個微服務的時代,將每個WAR完全分開並單獨部署而不是將它們捆綁到一個整體EAR中是否更有意義? – 2015-11-09 18:02:20

35

war - web archive。它用於根據servlet標準部署Web應用程序。它是一個jar文件,其中包含一個名爲WEB-INF的特殊目錄以及其中的多個文件和目錄(web.xml,lib,classes)以及Web應用程序的所有HTML,JSP,圖像,CSS,JavaScript和其他資源

耳企業檔案。它用於部署包含EJB,Web應用程序和第三方庫的企業應用程序。它也是一個jar文件,它有一個名爲APP-INF的特殊目錄,它包含application.xml文件,它包含jar和war文件。

448

一個WAR(Web歸檔)是被裝入的Java Application Server一個Web container的模塊。 Java Application Server有兩個容器(運行時環境) - 一個是Web容器,另一個是EJB容器。

Web容器託管基於JSP或Servlet API的Web應用程序 - 專門爲Web請求處理而設計 - 所以更多的是請求/響應風格的分佈式計算。 Web容器需要將Web模塊打包爲WAR文件 - 這是WEB-INF文件夾中具有web.xml文件的特殊JAR文件。

EJB容器舉辦基礎上,EJB API旨在提供擴展的業務功能,如聲明式事務,聲明方法級別的安全性和多協議支持企業Java Beans - 讓更多的分佈式計算的RPC風格。 EJB容器需要將EJB模塊打包爲JAR文件 - 這些文件在META-INF文件夾中具有ejb-jar.xml文件。

企業應用程序可能由一個或多個可以是Web模塊(打包爲WAR文件)或EJB模塊(打包爲JAR文件)或兩者兼而有之的模塊組成。企業應用程序打包爲EAR文件 - 這些是包含META-INF文件夾中的application.xml文件的特殊JAR文件。

基本上EAR文件是含有WAR文件JAR文件的超集。 Java應用服務器允許在WAR文件中部署獨立的Web模塊,儘管它們在內部創建EAR文件作爲WAR文件的包裝。獨立的Web容器(如Tomcat和Jetty)不支持EAR文件 - 這些文件不是完整的應用程序服務器。這些容器中的Web應用程序只能部署爲WAR文件。

在應用程序服務器中 - EAR文件包含諸如Web模塊的應用程序安全角色映射,EJB引用映射和上下文根URL映射等配置。

除了Web模塊和EJB模塊外,EAR文件還可以包含打包爲RAR文件的連接器模塊和打包爲JAR文件的客戶端模塊。

+21

+1,因爲這個答案描述了你爲什麼要使用其中一個。 – 2014-03-07 22:58:50

+1

我可以使用7Zip/WinZip/WinRar等來提取它們(例如fileName.jar)嗎? – KNU 2014-06-05 17:19:56

+4

@KNU yes,'.jar','.war'和'.ear'文件都是簡單的zip壓縮文件,因此可以通過任何可以處理普通.zip文件的程序打開。 – acdcjunior 2014-06-12 01:45:38

6

Ear文件提供更多選項來配置與應用程序服務器的交互。例如:如果應用程序服務器的休眠版本比您的依賴關係提供的版本舊,那麼您可以將以下內容添加到JBOSS的ear-deployer-jboss-beans.xml以隔離類加載器並避免衝突:

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

或爲src /主/應用/ 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/other AS classloader)中查找。 據我所知,這是不可能的戰爭文件。

+0

KNU:這種使用ear文件比使用它更有效,因爲它包含了Servlet類文件,JSP文件,支持文件,GIF和HTML文件,正如接受的答案中所述。由於war文件也可以包含gif,html,jsp,servlets ......如果每個人都「以他的力量回答」,也許我們都可以在這個問題上變得更加聰明。 – Mark 2014-06-06 13:23:24

+0

Maven爲你做的不是嗎?您可以指定每個版本的依賴關係,並將它們包含在/ lib文件夾中。 (在war文件中) – Sebas 2015-01-09 17:00:39

+0

是的,但是應用程序服務器/ servlet容器可以選擇在lib文件夾中用他在自己的lib文件夾中提供的庫來覆蓋它們。這可以防止這種情況。這一切都取決於使用的類加載機制。 – Mark 2015-01-12 08:53:21

9

參見:http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html

焦油(磁帶歸檔) - 使用的文件寫在文件名,檔案大小,FILEDATA 的序列單位格式 - 無壓縮。可以是巨大的

Jar(java歸檔) - 使用的壓縮技術 - 通常包含java類信息,如類/ java文件。但可以包含任何文件和目錄結構

戰爭(web應用程序歸檔) - 類似像jar文件只有特定的目錄結構爲每個JSP/Servlet規範進行部署的目的

耳(企業檔案) - 類似像jar文件。具有遵循J2EE要求的目錄結構,以便它可以部署在J2EE應用程序服務器上。 - 可以包含多個JAR和WAR文件

6

J2EE定義了三種檔案:

  1. 的Java歸檔文件(JAR)一個JAR文件封裝一個或多個Java類,清單和描述符。 JAR文件是歸檔的最低級別。 JAR文件在J2EE中用於打包EJB和客戶端Java應用程序。

  2. 網絡歸檔(WAR) WAR文件與JAR文件類似,但它們專門用於由Servlet,JSP和支持類構成的Web應用程序。

  3. Enterprise Archives(EAR)「EAR文件包含組成特定J2EE應用程序的所有組件。

1

JAR文件

一個JAR(簡稱Java歸檔)文件允許的幾個 文件組合成一個單一的一個。帶'.jar'的文件; 軟件開發人員利用擴展來分發Java類和各種元數據。 這些還保存庫和資源文件,以及配件文件 (如屬性文件)。

用戶可以使用Java Development Kit '的s (JDK)'.jar'命令來提取和創建JAR文件。 ZIP工具也可以使用。

JAR文件具有可選的清單文件。清單文件 中的條目規定了JAR文件的使用。文件類 的「主」類規範將文件表示爲分離或「獨立」程序。

WAR文件

一場戰爭(或Web應用程序歸檔)文件可以包含XML (可擴展標記語言)文件,Java類,以及Java服務器 頁互聯網應用的目的。它也被用於標記構成Web應用程序的庫和Web頁面 。包含 文件的'.war '擴展包含用於服務器或JSP(Java 服務器頁面)容器的Web應用程序。它具有JSP,HTML(超文本標記 語言),JavaScript以及用於創建前述 Web應用程序的各種文件。

WAR文件是這樣構成的,以允許特殊的目錄和 文件。它也可能具有數字簽名(非常像JAR文件) 以顯示代碼的準確性。

EAR文件

的EAR(企業檔案)文件合併JAR和WAR文件到 單一存檔。具有'.ear '擴展名的這些文件具有用於 元數據的目錄。這些模塊被打包到歸檔中,以便在應用服務器中同時操作不同模塊。

EAR文件還具有部署描述符(它們是XML文件) ,它們有效地規定了不同模塊的部署。

enter image description here

相關問題