2009-10-20 34 views
460

Sự khác nhau giữa tệp .war và .ear là gì?.war vs .ear file

+2

Để hiểu thêm về ** '.JAR, .WAR và .EAR' ** Bạn cũng có thể nhìn thấy một video hướng dẫn. Nó rất đơn giản hoặc dễ hiểu hơn. Nó sẽ giải thích sự khác biệt ** ** giữa ** JAR, .WAR ** và **. EAR ** ** Video Tutorial **: [Sự khác nhau giữa .JAR, .WAR và .EAR] (https: //www.youtube.com/watch?v=ecxIBCu2-b4) –

+1

Tôi gặp sự cố sau video đó vì giọng ấn tượng nặng nề của người nói. – raarts

Trả lời

431

Từ GeekInterview:

Trong ứng dụng J2EE, mô-đun được đóng gói như EAR, JAR và WAR dựa trên chức năng của họ

JAR: module EJB có chứa enterprise bean java (file class) và EJB bộ mô tả triển khai được đóng gói dưới dạng tệp JAR có .jar extenstion

WAR: Mô-đun web chứa tệp lớp Servlet, tệp JSP, tệp hỗ trợ, tệp GIF và HTML được đóng gói dưới dạng tệp JAR tiện ích mở rộng ith .war (web archive)

EAR: Tất cả các tệp ở trên (.jar và .war) được đóng gói dưới dạng tệp JAR với phần mở rộng .ear (enterprise archive) và được triển khai vào Máy chủ ứng dụng.

+49

Bài viết này làm cho tôi nghĩ rằng EAR chỉ là cả hai JARS và WARS cùng nhau trong một EAR lớn, mà tôi nghĩ rằng không phải là đơn giản. –

+3

Tất cả trong bản chất là Lưu trữ (JAR) nhưng có phần mở rộng khác nhau để ngụ ý tính chất/nội dung của chúng. – KNU

+1

EAR và JAR riêng biệt cho đậu là không cần thiết trong hầu hết các trường hợp. Một WAR đơn giản với tất cả các lớp trong một kho lưu trữ là bình thường. Đây là một giải thích phức tạp hơn: http://www.adam-bien.com/roller/abien/entry/ears_wars_and_size_matters –

24

Tệp WAR (lưu trữ web) chứa tệp lớp servlet, JSP (trang Java servlet), tệp HTML và đồ họa và các tệp hỗ trợ khác.

Tệp EAR (lưu trữ doanh nghiệp) chứa tệp WAR cùng với các tệp JAR chứa mã.

Có thể có những thứ khác trong các tập tin nhưng về cơ bản họ có nghĩa là cho những gì họ nghe như nghĩa của chúng: WAR cho web loại công cụ, EAR cho doanh nghiệp kiểu thứ (Wars, mã, đầu nối et al).

+2

Trong trường hợp của tôi, tôi luôn triển khai WAR với các jars trong thư mục WEB-INF/lib và nó hoạt động. Vậy tại sao tôi nên sử dụng lưu trữ EAR? – swapyonubuntu

+2

@swapyonubuntu, nếu bạn chỉ triển khai một ứng dụng web (cụ thể hơn, một ngữ cảnh servlet đơn), không có gì sai khi chỉ thực hiện các tệp WAR. Các tệp EAR là cách tốt hơn cho các ứng dụng doanh nghiệp toàn diện, bao gồm các ứng dụng có nhiều ứng dụng web. – paxdiablo

+1

Trong thời đại này của microservices, nó sẽ không có ý nghĩa hơn để giữ cho mỗi WAR hoàn toàn riêng biệt và triển khai một cách riêng biệt thay vì bó chúng lại với nhau thành một EAR nguyên khối? –

35

chiến tranh - lưu trữ web. Nó được sử dụng để triển khai các ứng dụng web theo tiêu chuẩn servlet. Nó là một tệp jar chứa một thư mục đặc biệt gọi là WEB-INF và một số tệp và thư mục bên trong nó (web.xml, lib, classes) cũng như tất cả HTML, JSP, hình ảnh, CSS, JavaScript và các tài nguyên khác của ứng dụng web

lưu trữ tai - doanh nghiệp. Nó được sử dụng để triển khai ứng dụng doanh nghiệp có chứa các EJB, các ứng dụng web và các thư viện của bên thứ ba. Nó cũng là một tệp jar, nó có một thư mục đặc biệt gọi là APP-INF chứa tệp application.xml và nó chứa các tệp jar và chiến tranh.

448

Một WAR (Web Archive) là một mô-đun đó được nạp vào một Web container của một Java Application Server. Máy chủ ứng dụng Java có hai thùng chứa (môi trường thời gian chạy) - một là một thùng chứa Web và một là một thùng chứa EJB.

Container Web tổ chức các ứng dụng Web dựa trên JSP hoặc Servlet API - thiết kế đặc biệt để xử lý yêu cầu web - vì vậy nhiều hơn một phong cách request/response tính toán phân tán. Vùng chứa Web yêu cầu mô-đun Web được đóng gói dưới dạng tệp tin WAR - đó là tệp JAR đặc biệt có tệp web.xml trong thư mục WEB-INF.

An EJB container lưu trữ Các hạt Java doanh nghiệp dựa trên EJB API được thiết kế để cung cấp chức năng kinh doanh mở rộng như giao dịch khai báo, bảo mật mức phương thức khai báo và hỗ trợ đa băng. Các thùng chứa EJB yêu cầu các mô-đun EJB phải được đóng gói dưới dạng các tệp JAR - chúng có tệp ejb-jar.xml trong thư mục META-INF.

Ứng dụng doanh nghiệp có thể bao gồm một hoặc nhiều mô-đun có thể là mô-đun web (được đóng gói dưới dạng tệp tin WAR) hoặc mô-đun EJB (được đóng gói dưới dạng tệp JAR) hoặc cả hai. Các ứng dụng doanh nghiệp được đóng gói dưới dạng Tệp EAR - đây là các tệp JAR đặc biệt có chứa tệp application.xml trong thư mục META-INF.

Về cơ bản file EAR là một superset chứa file WARfile JAR. Máy chủ ứng dụng Java cho phép triển khai các mô đun web độc lập trong tệp tin WAR, mặc dù trong nội bộ chúng tạo các tệp EAR như một trình bao bọc xung quanh các tệp tin WAR. Các thùng chứa web độc lập như Tomcat và Jetty không hỗ trợ các tệp EAR - đây không phải là các máy chủ ứng dụng đầy đủ. Các ứng dụng web trong các thùng chứa này chỉ được triển khai dưới dạng tệp tin WAR.

Trong máy chủ ứng dụng - tệp EAR chứa các cấu hình như ánh xạ vai trò bảo mật ứng dụng, ánh xạ tham chiếu EJB và ánh xạ url gốc ngữ cảnh của mô-đun web.

Ngoài mô-đun web và mô-đun EJB Tệp EAR cũng có thể chứa mô-đun trình kết nối được đóng gói dưới dạng tệp RAR và mô đun ứng dụng khách được đóng gói dưới dạng tệp JAR.

+21

+1 vì câu trả lời này mô tả lý do tại sao bạn có thể muốn sử dụng cái này hoặc cái kia. –

+1

tôi có thể trích xuất chúng (ví dụ: fileName.jar) bằng 7Zip/WinZip/WinRar etc ??? – KNU

+4

@KNU có, '.jar',' .war'and '.ear' là các tệp nén zip đơn giản, do đó có thể được mở bằng bất kỳ chương trình nào có thể xử lý các tệp .zip thông thường. – acdcjunior

6

Tệp tai cung cấp thêm tùy chọn để định cấu hình tương tác với máy chủ ứng dụng. Ví dụ: nếu phiên bản hibernate của máy chủ ứng dụng cũ hơn phiên bản được cung cấp bởi phụ thuộc của bạn, bạn có thể thêm đoạn mã sau vào ear-deployer-jboss-beans.xml để JBOSS tách biệt trình nạp lớp và tránh xung đột:

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

hoặc 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> 

Điều này sẽ đảm bảo rằng không có xung đột classloader giữa ứng dụng của bạn và máy chủ ứng dụng.

Thông thường cơ chế classloader làm việc như thế này:

Khi một yêu cầu tải lớp được trình bày cho một bộ nạp lớp, nó đầu tiên hỏi bộ nạp lớp cha của nó để thực hiện yêu cầu. Phụ huynh, trong lần lượt , hãy hỏi cha mẹ của nó cho lớp cho đến khi yêu cầu đạt đến số hàng đầu của cấu trúc phân cấp. Nếu trình nạp lớp ở đầu cấu trúc phân cấp không thể thực hiện yêu cầu, thì trình tải lớp con được gọi là chịu trách nhiệm tải lớp.

Bằng cách cách ly trình nạp lớp, bộ nạp lớp tai của bạn sẽ không nhìn vào cha mẹ (= JBoss/bộ nạp lớp AS khác). Theo tôi biết, điều này là không thể với các tập tin chiến tranh.

+0

KNU: Việc sử dụng tệp tai này hợp lệ hơn là chỉ sử dụng tệp này vì "tệp chứa các tệp lớp Servlet, JSP FIles, tệp hỗ trợ, tệp GIF và HTML" như đã nêu trong câu trả lời được chấp nhận. Vì các tập tin chiến tranh cũng có thể chứa gif, html, jsp's, servlets, ... Nếu mọi người "trả lời ở sức mạnh của anh ấy", có lẽ tất cả chúng ta đều có thể trở nên khôn ngoan hơn về vấn đề này. – Mark

+0

Maven có làm điều đó cho bạn không? Bạn có thể chỉ định các phụ thuộc cho mỗi phiên bản và chúng được đưa vào thư mục/lib. (trong tập tin chiến tranh) – Sebas

+0

Vâng, nhưng máy chủ ứng dụng/thùng chứa servlet có thể chọn ghi đè lên các thư mục này trong thư mục lib với thư mục libs mà anh cung cấp trong thư mục lib của chính mình. Điều này có thể ngăn chặn điều đó. Tất cả phụ thuộc vào cơ chế nạp lớp được sử dụng. – Mark

9

Tham khảo: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html

tar (tài liệu lưu trữ băng) - Định dạng sử dụng được tập tin văn bản trong các đơn vị nối tiếp của fileName, Dung lượng, fileData - không nén.có thể là rất lớn

Jar (lưu trữ java) - kỹ thuật nén được sử dụng - thường chứa thông tin java như tệp class/java. Nhưng có thể chứa bất kỳ tập tin và cấu trúc thư mục

(tài liệu lưu trữ ứng dụng web) chiến tranh - tương tự như các tập tin jar chỉ có cấu trúc thư mục cụ thể theo JSP/Servlet spec cho mục đích triển khai

tai (tài liệu lưu trữ doanh nghiệp) - tương tự như các tệp jar. có cấu trúc thư mục theo các yêu cầu J2EE để nó có thể được triển khai trên các máy chủ ứng dụng J2EE. - có thể chứa nhiều JAR và WAR file

6

J2EE định nghĩa ba loại tài liệu lưu trữ:

  1. Java Lưu trữ (JAR) Một tập tin JAR gói gọn một hoặc các lớp Java hơn, một biểu hiện, và một mô tả . Tệp JAR là mức lưu trữ thấp nhất. Các tệp JAR được sử dụng trong J2EE để đóng gói các EJB và các ứng dụng Java phía máy khách.

  2. Lưu trữ web (WAR) Tệp WAR tương tự như tệp JAR, ngoại trừ chúng dành riêng cho các ứng dụng web được tạo từ Servlets, JSP và các lớp hỗ trợ.

  3. Lưu trữ doanh nghiệp (EAR) ”Tệp EAR chứa tất cả các thành phần tạo nên một ứng dụng J2EE cụ thể.

1

file JAR

Một JAR (viết tắt của Java Archive) tập tin cho phép sự kết hợp của nhiều file vào một duy nhất. Các tệp có '.jar'; mở rộng được sử dụng bởi nhà phát triển phần mềm để phân phối các lớp Java và siêu dữ liệu khác nhau. Những thư viện này cũng chứa các tệp thư viện và tài nguyên, cũng như các tệp phụ kiện (chẳng hạn như tệp thuộc tính).

Người dùng có thể trích xuất và tạo tệp JAR bằng Bộ phát triển Java ' s (JDK) '.jar' lệnh. Các công cụ ZIP cũng có thể được sử dụng.

Tệp JAR có tệp kê khai tùy chọn. Các mục nhập trong tệp kê khai quy định việc sử dụng tệp JAR. Đặc tả lớp 'chính' cho một lớp tệp biểu thị tệp là một chương trình độc lập hoặc độc lập.

WAR tập tin

Một WAR (hoặc kho lưu trữ ứng dụng Web) tập tin có thể bao gồm XML file (Extensible Markup Language), các lớp Java, cũng như Java Server trang cho các mục đích của ứng dụng Internet. Nó cũng được sử dụng để đánh dấu các thư viện và các trang Web tạo nên một ứng dụng Web. Các tệp có phần mở rộng là tiện ích ‘.war ' chứa ứng dụng Web để sử dụng với các thùng chứa máy chủ hoặc JSP (Java Trang chủ). Nó có JSP, HTML (Ngôn ngữ đánh dấu siêu văn bản ), JavaScript và các tệp khác nhau để tạo các ứng dụng web nói trên.

Tệp WAR được cấu trúc như vậy để cho phép các thư mục đặc biệt và các tệp . Nó cũng có thể có chữ ký số (giống như chữ ký của một tệp JAR) để hiển thị tính xác thực của mã.

EAR tập tin

Một EAR (Enterprise Archive) tập tin kết hợp JAR và WAR file vào một kho lưu trữ đơn . Những tệp này có tiện ích mở rộng ‘.ear ' có một thư mục cho siêu dữ liệu. Các mô-đun được đóng gói vào lưu trữ để làm mịn và hoạt động đồng thời của các mô-đun khác nhau trong một máy chủ ứng dụng.

Tệp EAR cũng có các bộ mô tả triển khai (là các tệp XML) có hiệu quả quyết định việc triển khai các mô-đun khác nhau.

enter image description here

Các vấn đề liên quan