1. 程式人生 > >Jar/War/Ear等包的作用與區別詳解

Jar/War/Ear等包的作用與區別詳解

  以客戶角度來看,jar檔案就是一種封裝格式,使用者不需要知道jar包中有多少個.class格式的檔案及每個檔案中的功能與作用,也可以得到相應的訪問的結果。java中除了jar格式還有war和ear等包檔案。

 

JAR

WAR

EAR

英文

Java Archive file

Web Archive file

Enterprise Archive file

包含內容

class、properties檔案,是檔案封裝的最小單元;包含Java類的普通庫、資源(resources)、輔助檔案(auxiliary files)等

Servlet、JSP頁面、JSP標記庫、JAR庫檔案、HTML/XML文件和其他公用資原始檔,如圖片、音訊檔案等

除了包含JAR、WAR以外,還包括EJB元件

部署檔案

application-client.xml

web.xml

application.xml

容器

應用伺服器(application servers)

小型服務程式容器(servlet containers)

EJB容器(EJB containers)

級別

 

1、EAR檔案的打包

EAR檔案包括整個JSP專案,內含多個 EJB Module(JAR檔案)和 Web Module(WAR檔案)。

EAR檔案的生成可以使用winrar(windows平臺上的軟體)以zip壓縮方式或者從命令列以jar命令來生成。

操作步驟:

1)先打包成war和jar,並寫好application.xml,放到 META-INF 目錄下。

2)打包命令:(進入檔案所在目錄)

jar cf application.ear application.war application.jar META-INF\application.xml

注意:application.xml是用來描述ear中包括的war和jar等包檔案

 

3)解包命令:

jar xf application.ear -C 目標路徑

 

weblogic自帶的petstore的application.xml例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_1_2.dtd'

 <application> 

     <display-name>estore</display-name> 

     <description>Application description</description> 

     <module> 

         <ejb>customerEjb.jar</ejb> 

     </module> 

     <module> 

         <ejb>mailerEjb.jar</ejb> 

     </module> 

     <module> 

         <web> 

             <web-uri>petstore.war</web-uri> 

             <context-root>estore</context-root> 

         </web> 

     </module> 

     <module> 

         <ejb>petstoreEjb.jar</ejb> 

     </module> 

     <module> 

         <ejb>signonEjb.jar</ejb> 

     </module> 

     <module> 

         <ejb>personalizationEjb.jar</ejb> 

     </module> 

     <module> 

         <ejb>inventoryEjb.jar</ejb> 

     </module> 

     <module> 

         <ejb>shoppingcartEjb.jar</ejb> 

     </module> 

     <security-role> 

         <description>the gold customer role</description> 

         <role-name>gold_customer</role-name> 

     </security-role> 

     <security-role> 

         <description>the customer role</description> 

         <role-name>customer</role-name> 

     </security-role> 

     <security-role> 

         <role-name>administrator</role-name> 

     </security-role> 

 </application>

2、WAR的使用

1)生成war包檔案命令:

jar -cvf web.war 被打包檔案

2)檢視war包內容命令:

jar -tf web.war

3)解壓war包檔案命令:

jar -xf web.war  

      也可使用winrar軟體選擇zip壓縮方式,並將壓縮檔案字尾名改為war即可壓縮生成war檔案。同樣使用winrar軟體可以開啟war 檔案,或者解壓war檔案。

      使用jar命令與winrar軟體的區別在於前者在壓縮檔案的同時會生成 META-INF 資料夾,內包含MANIFEST.MF檔案。

3、何時使用war或者jar檔案

      在專案在沒有完全開發完成時,不適合使用war檔案,因為你的類會由於除錯之類的經常被修改,來回建立war包很麻煩。當專案完全開發完成後續無需修改時,可以建立war包。這個時候war包檔案就相當於一個web應用程式;而jar檔案就是把類和一些相關的資源封裝到一個包中,便於程式中引用。


4、jar/war/ear包檔案的作用與區別:

4.1、 作用與區別

1) jar: 把開發時要引用通用(JAVA)類及資源做封裝,打成包後便於存放管理;

2) war:一個(web)完整的應用,通常是網站或WEB平臺,打成包部署到容器中;

3) ear: 企業級應用,實際上EAR包中包含WAR包和幾個企業級專案的配置檔案而已,伺服器中介軟體通常選擇WebSphere等都會使用EAR包。通常是EJB打成ear包。

4.2、打包方式

1) 所有的包都是用jar命令製作,只不過目標檔案的副檔名不一樣。

2) 也可以用Ant來構建。

3) Windows平臺winrar命令。

4.3、JET編譯成EXE

1)  JET 是要用錢買的,據說 JET 也不是能把所有的 Java 程式都編譯成執行檔案,效能也要打些折扣。所以,使用製作可執行 JAR 檔案包的方法就是最佳選擇了,何況它還能保持 Java 的跨平臺特性。

 

注意:程式碼上線時將web專案以war的方式匯出後,直接放在tomcat容器的webapps下 ,啟動服務,即可執行該專案,該war包會自動解壓出一個同名的資料夾。