ความแตกต่างระหว่างไฟล์. war และ. ear คืออะไร
ความแตกต่างระหว่างไฟล์. war และ. ear คืออะไร
คำตอบ:
จากGeekInterview :
ในแอ็พพลิเคชัน J2EE โมดูลจะถูกแพ็กเกจเป็น EAR, JAR และ WAR ตามการทำงานของมัน
JAR: โมดูล EJB ซึ่งมี enterprise java beans (ไฟล์คลาส) และตัวให้คำอธิบายการปรับใช้ EJB ถูกบีบอัดเป็นไฟล์ JAR ที่มีนามสกุล. jar
WAR: เว็บโมดูลที่มีไฟล์คลาส Servlet, ไฟล์ JSP, ไฟล์สนับสนุน, ไฟล์ GIF และ HTML ได้รับการบรรจุเป็นไฟล์ JAR ที่มีนามสกุล. war (เว็บไฟล์เก็บถาวร)
EAR: ไฟล์ทั้งหมดข้างบน (.jar และ. war) ถูกทำแพ็กเกจเป็นไฟล์ JAR ที่มีนามสกุล. ear (enterprise archive) และนำไปใช้งานใน Application Server
WAR (เก็บถาวรเว็บ)เป็นโมดูลที่ได้รับการโหลดลงที่เว็บคอนเทนเนอร์ของเซิร์ฟเวอร์ Java Application Java Application Server มีสองคอนเทนเนอร์ (สภาพแวดล้อมรันไทม์) - หนึ่งคือเว็บคอนเทนเนอร์และอีกหนึ่งคือคอนเทนเนอร์ EJB
เว็บคอนเทนเนอร์การใช้งานเว็บโฮสต์อยู่บนพื้นฐานของ JSP หรือ Servlets API - ออกแบบมาโดยเฉพาะสำหรับการจัดการการร้องขอเว็บ - เพื่อให้มากขึ้นของรูปแบบคำขอ / ตอบสนองของการคำนวณแบบกระจาย เว็บคอนเทนเนอร์ต้องการให้เว็บโมดูลถูกแพ็กเป็นไฟล์ WARซึ่งเป็นไฟล์ JAR พิเศษที่มีweb.xml
ไฟล์ในWEB-INF
โฟลเดอร์
ภาชนะ EJBเจ้าภาพองค์กรถั่ว Java บนพื้นฐานของ API EJB ได้รับการออกแบบเพื่อให้การทำงานธุรกิจขยายเช่นการทำธุรกรรมที่เปิดเผยการรักษาความปลอดภัยระดับวิธีการที่เปิดเผยและการสนับสนุนหลายโปรโตคอล - ดังนั้นมากขึ้นของรูปแบบ RPC ของการคำนวณแบบกระจาย คอนเทนเนอร์ EJB ต้องการโมดูล EJB ที่จะถูกแพ็กเกจเป็นไฟล์ JAR - ไฟล์เหล่านี้มีejb-jar.xml
ไฟล์ในMETA-INF
โฟลเดอร์
แอปพลิเคชันระดับองค์กรอาจประกอบด้วยหนึ่งโมดูลขึ้นไปที่สามารถเป็นเว็บโมดูล (รวมเป็นไฟล์ WAR), โมดูล EJB (รวมเป็นไฟล์ JAR) หรือทั้งสองอย่าง แอปพลิเคชันระดับองค์กรบรรจุเป็นไฟล์ EARซึ่งเป็นไฟล์ JAR พิเศษที่มีapplication.xml
ไฟล์อยู่ในMETA-INF
โฟลเดอร์
โดยทั่วไปไฟล์ EARเป็นเซ็ตที่มีไฟล์ WARและไฟล์ JAR Java Application Servers อนุญาตให้ปรับใช้เว็บโมดูลแบบสแตนด์อโลนในไฟล์ WAR แม้ว่าจะเป็นการภายใน แต่ก็สร้างไฟล์ EAR เป็น wrapper รอบไฟล์ WAR เว็บคอนเทนเนอร์แบบสแตนด์อโลนเช่นTomcatและJettyไม่รองรับไฟล์ EAR - สิ่งเหล่านี้ไม่ใช่แอพพลิเคชันเซิร์ฟเวอร์แบบเต็มรูปแบบ เว็บแอ็พพลิเคชันในคอนเทนเนอร์เหล่านี้จะถูกปรับใช้เป็นไฟล์ WAR เท่านั้น
ในแอ็พพลิเคชันเซิร์ฟเวอร์ไฟล์ EAR มีการกำหนดค่าเช่นการแม็พบทบาทความปลอดภัยของแอ็พพลิเคชันการแม็พการอ้างอิง EJB และการแม็พ URL รูทบริบทของเว็บโมดูล
นอกเหนือจากเว็บโมดูลและโมดูล EJB ไฟล์ EAR ยังสามารถมีโมดูลตัวเชื่อมต่อที่รวมเป็นไฟล์ RAR และโมดูลไคลเอ็นต์ที่รวมเป็นไฟล์ JAR
.jar
, .war
และ.ear
ไฟล์ที่เก็บซิปง่ายจึงสามารถจะเปิดโปรแกรมใด ๆ ที่สามารถจัดการไฟล์ซิปสามัญ
สงคราม - เก็บถาวรเว็บ มันถูกใช้เพื่อปรับใช้เว็บแอ็พพลิเคชันตามมาตรฐานเซิร์ฟเล็ต เป็นไฟล์ jar ที่มีไดเรกทอรีพิเศษที่เรียกว่า WEB-INF และหลายไฟล์และไดเรกทอรีภายใน (web.xml, lib, คลาส) รวมถึง HTML, JSP, รูปภาพ, CSS, JavaScript และทรัพยากรอื่น ๆ ของเว็บแอปพลิเคชัน
ear - ไฟล์เก็บถาวรขององค์กร มันถูกใช้เพื่อปรับใช้แอปพลิเคชันองค์กรที่มี EJBs เว็บแอปพลิเคชันและห้องสมุดบุคคลที่สาม มันเป็นไฟล์ jar ด้วยมีไดเร็กทอรีพิเศษชื่อ APP-INF ที่มีไฟล์ application.xml และมีไฟล์ jar และ war
ไฟล์ WAR (เก็บถาวรเว็บ) มีไฟล์คลาส servlet, JSP (หน้า servlet Java), HTML และไฟล์กราฟิกและไฟล์สนับสนุนอื่น ๆ
ไฟล์ EAR (ไฟล์เก็บถาวรขององค์กร) มีไฟล์ WAR พร้อมกับไฟล์ JAR ที่มีรหัส
อาจมีสิ่งอื่น ๆ ในไฟล์เหล่านั้น แต่โดยทั่วไปแล้วมันมีความหมายสำหรับสิ่งที่ดูเหมือนว่าพวกเขาหมายถึง: WAR สำหรับสิ่งที่ประเภทของเว็บ, EAR สำหรับสิ่งที่ประเภทองค์กร (WARs, รหัส, ตัวเชื่อมต่อและอื่น ๆ )
ไฟล์ JAR
ไฟล์ JAR (ย่อมาจาก Java Archive) อนุญาตให้รวมไฟล์หลาย ๆ ไฟล์ไว้ในไฟล์เดียว ไฟล์ที่มี '.jar'; ส่วนขยายถูกใช้โดยผู้พัฒนาซอฟต์แวร์เพื่อกระจายคลาส Java และข้อมูลเมตาต่างๆ สิ่งเหล่านี้ยังเก็บไลบรารีและไฟล์ทรัพยากรรวมถึงไฟล์เสริม (เช่นไฟล์คุณสมบัติ)
ผู้ใช้สามารถแตกและสร้างไฟล์ JAR ด้วยคำสั่ง '.jar' ของ Java Development Kit (.JKK) อาจใช้เครื่องมือ ZIP
ไฟล์ JAR มีไฟล์รายการเสริม รายการภายในไฟล์รายการกำหนดการใช้งานไฟล์ JAR ข้อกำหนดคุณสมบัติคลาส 'main' สำหรับคลาสไฟล์จะระบุว่าไฟล์เป็นโปรแกรมที่แยกออกหรือ 'สแตนด์อะโลน'
ไฟล์ WAR
ไฟล์ WAR (หรือเก็บถาวรแอปพลิเคชันเว็บ) สามารถประกอบด้วยไฟล์ XML (Extensible Markup Language), คลาส Java, และเพจ Java Server สำหรับวัตถุประสงค์ของแอปพลิเคชันอินเทอร์เน็ต นอกจากนี้ยังใช้เพื่อทำเครื่องหมายไลบรารีและเว็บเพจที่ประกอบเป็นเว็บแอปพลิเคชัน ไฟล์ที่มีนามสกุล '.war' จะมีเว็บแอปพลิเคชันสำหรับใช้กับเซิร์ฟเวอร์หรือคอนเทนเนอร์ JSP (หน้าเซิร์ฟเวอร์ Java) มันมี JSP, HTML (Hypertext Markup Language), JavaScript และไฟล์ต่าง ๆ สำหรับการสร้างแอปพลิเคชันเว็บดังกล่าว
ไฟล์ WAR นั้นมีโครงสร้างเพื่ออนุญาตให้ใช้สำหรับไดเร็กทอรีและไฟล์พิเศษ นอกจากนี้ยังอาจมีลายเซ็นดิจิทัล (คล้ายกับไฟล์ JAR) เพื่อแสดงความจริงของรหัส
ไฟล์ EAR
ไฟล์ EAR (Enterprise Archive) จะรวมไฟล์ JAR และ WAR ไว้ในไฟล์เก็บถาวรเดียว ไฟล์เหล่านี้ที่มีนามสกุล '.ear' มีไดเรกทอรีสำหรับข้อมูลเมตา โมดูลจะถูกบรรจุลงในไฟล์เก็บถาวรเพื่อการทำงานที่ราบรื่นและพร้อมกันของโมดูลต่างๆภายในเซิร์ฟเวอร์แอป
ไฟล์ EAR ยังมีตัวให้คำอธิบายการปรับใช้ (ซึ่งเป็นไฟล์ XML) ซึ่งกำหนดการปรับใช้โมดูลที่แตกต่างกันได้อย่างมีประสิทธิภาพ
อ้างอิง: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar (ไฟล์เก็บถาวรเทป) - รูปแบบที่ใช้คือไฟล์ที่เขียนในหน่วยอนุกรมของชื่อไฟล์, ขนาดไฟล์, ไฟล์ดาต้า - ไม่มีการบีบอัด สามารถใหญ่
Jar (เก็บถาวร java) - เทคนิคการบีบอัดที่ใช้ - โดยทั่วไปมีข้อมูล java เช่นไฟล์ class / java แต่สามารถมีไฟล์ใด ๆ และโครงสร้างไดเรกทอรี
war (เว็บแอ็พพลิเคชันไฟล์เก็บถาวร) - ไฟล์ jar คล้ายกันมีโครงสร้างไดเร็กทอรีเฉพาะตามข้อมูลจำเพาะ JSP / Servlet สำหรับการปรับใช้
ear (คลังเก็บขององค์กร) - คล้ายกับไฟล์ jar มีโครงสร้างไดเร็กทอรีตามข้อกำหนด J2EE เพื่อให้สามารถปรับใช้บนแอ็พพลิเคชันเซิร์ฟเวอร์ J2EE - สามารถมีไฟล์ JAR และ WAR หลายไฟล์
ไฟล์ Ear จัดเตรียมอ็อพชันเพิ่มเติมเพื่อกำหนดค่าการโต้ตอบกับแอ็พพลิเคชันเซิร์ฟเวอร์
ตัวอย่างเช่น: หากเวอร์ชัน hibernate ของแอ็พพลิเคชันเซิร์ฟเวอร์เก่ากว่าเวอร์ชันที่จัดเตรียมโดยการขึ้นต่อกันของคุณคุณสามารถเพิ่มสิ่งต่อไปนี้ใน ear-deployer-jboss-beans.xml สำหรับ JBOSS เพื่อแยก classloaders และหลีกเลี่ยงความขัดแย้ง:
<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>
สิ่งนี้จะทำให้แน่ใจได้ว่าไม่มีความขัดแย้งของ classloader ระหว่างแอ็พพลิเคชันของคุณกับแอ็พพลิเคชันเซิร์ฟเวอร์
โดยปกติกลไก classloader ทำงานเช่นนี้:
เมื่อมีการแสดงคำขอโหลดคลาสไปยังคลาสโหลดเดอร์มันจะถามคลาสโหลดเดอร์หลักเพื่อดำเนินการตามคำขอ ผู้ปกครองในทางกลับกันขอให้ผู้ปกครองสำหรับชั้นเรียนจนคำขอถึงด้านบนของลำดับชั้น หากคลาสโหลดเดอร์ที่ด้านบนของลำดับชั้นไม่สามารถดำเนินการตามคำร้องขอคลาสโหลดเดอร์ที่เรียกว่ารับผิดชอบการโหลดคลาส
ด้วยการแยก classloaders หู classloader ของคุณจะไม่มองใน parent (= JBoss / other classloader AS) เท่าที่ฉันรู้นี้เป็นไปไม่ได้กับไฟล์สงคราม
J2EE กำหนดคลังเก็บสามประเภท:
Java Archives (JAR)ไฟล์ JAR ห่อหุ้มคลาส Java ตั้งแต่หนึ่งคลาสขึ้นไปรายการและตัวอธิบาย ไฟล์ JAR เป็นไฟล์เก็บถาวรระดับต่ำสุด ไฟล์ JAR ถูกใช้ใน J2EE สำหรับการทำแพ็กเกจ EJB และ Java Applications ฝั่งไคลเอ็นต์
ไฟล์ Web Archives (WAR) WAR คล้ายกับไฟล์ JAR ยกเว้นว่าเป็นไฟล์เฉพาะสำหรับเว็บแอ็พพลิเคชันที่ทำจาก Servlets, JSP และคลาสที่สนับสนุน
Enterprise Archives (EAR) ” ไฟล์ EAR มีส่วนประกอบทั้งหมดที่ประกอบเป็นแอปพลิเคชัน J2EE เฉพาะ
เพื่อให้การขนส่งโครงการการปรับใช้ทำได้ง่าย จำเป็นต้องบีบอัดเป็นไฟล์เดียว กลุ่ม JAR (ไฟล์เก็บถาวร java) ของไฟล์. class
WAR (เก็บถาวรเว็บ) - สงครามแต่ละครั้งแสดงถึงเว็บแอปพลิเคชั่นเดียว - ใช้เฉพาะเทคโนโลยีที่เกี่ยวข้องกับเว็บเช่น servlet, jsps สามารถใช้ได้ - สามารถทำงานบนเซิร์ฟเวอร์ Tomcat - เว็บแอพที่พัฒนาโดยเทคโนโลยีที่เกี่ยวข้องกับเว็บเท่านั้น jsp servlet html js - การแสดงข้อมูลไม่มีการทำธุรกรรม
EAR (ไฟล์เก็บถาวรขององค์กร) - หูแต่ละข้างแสดงถึงแอปพลิเคชันองค์กรหนึ่ง - เราสามารถใช้ทุกอย่างจาก j2ee เช่น ejb, jms สามารถใช้ได้อย่างมีความสุข - สามารถทำงานบน Glassfish เช่นเซิร์ฟเวอร์ไม่ได้อยู่ในเซิร์ฟเวอร์ Tomcat - แอปขององค์กร devloped โดยเทคโนโลยีใด ๆ จาก j2ee เช่นแอปพลิเคชันเว็บทั้งหมดรวมถึง ejbs jms เป็นต้น - ทำธุรกรรมกับการแสดงข้อมูล เช่น. แอพธนาคารแอพเทเลคอม
.JAR, .WAR and .EAR
คุณสามารถดูวิดีโอสอน มันง่ายมากหรือเข้าใจง่ายขึ้น มันจะอธิบายสิ่งที่เป็นความแตกต่างระหว่างขวด, .WARและ.EAR วิดีโอสอน : ความแตกต่างระหว่างขวด, .WAR และ .EAR