CATALINA_OPTS กับ JAVA_OPTS - ความแตกต่างคืออะไร?


106

ฉันพยายามค้นหาความแตกต่างระหว่างตัวแปร Apache Tomcat - CATALINA_OPTSและJAVA_OPTSในSOและประหลาดใจที่เห็นว่ายังไม่มีคำถาม / คำตอบที่โพสต์ไว้ที่นี่ เลยคิดจะแบ่งปันที่นี่ (พร้อมคำตอบ) หลังจากพบความแตกต่าง ตรวจสอบคำตอบ / ความแตกต่างด้านล่าง

หมายเหตุ:ในขณะที่โพสต์นี้เรากำลังเรียกใช้ Apache Tomcat v6.0.10 ด้วย JDK 6u32 บน CentOS5 64-bit arch

คำตอบ:


157

มีตัวแปรสภาพแวดล้อมสองตัว - CATALINA_OPTSและJAVA_OPTS- ซึ่งใช้ทั้งในสคริปต์เริ่มต้นและปิดระบบcatalina.shสำหรับ Tomcat มีการอธิบายไว้ในความคิดเห็นภายในไฟล์ว่า:

[JAVA_OPTS]: (ทางเลือก) ตัวเลือกรันไทม์ Java ที่ใช้เมื่อเรียกใช้คำสั่ง "start", "stop" หรือ "run"

และ

[CATALINA_OPTS]: (ไม่บังคับ) ตัวเลือกรันไทม์ Java ที่ใช้เมื่อเรียกใช้คำสั่ง "start" หรือ "run"

เหตุใดจึงมีตัวแปรสองตัวที่แตกต่างกัน? และอะไรคือความแตกต่าง?

ประการแรกสิ่งที่ระบุในตัวแปร EITHER จะถูกส่งผ่านไปยังคำสั่งที่เริ่มต้นใช้งาน Tomcat นั่นคือคำสั่ง "start" หรือ "run" แต่จะส่งเฉพาะค่าที่กำหนดใน JAVA_OPTS ไปยังคำสั่ง "stop" นั่นอาจไม่ได้สร้างความแตกต่างใด ๆ กับวิธีที่ Tomcat วิ่งในทางปฏิบัติเนื่องจากมีผลเฉพาะเมื่อสิ้นสุดการวิ่งไม่ใช่การเริ่มต้น

ความแตกต่างประการที่สองมีความละเอียดอ่อนมากขึ้น แอปพลิเคชันอื่น ๆ อาจใช้ JAVA_OPTS แต่มีเพียง Tomcat เท่านั้นที่ใช้ CATALINA_OPTS ดังนั้นหากคุณกำลังตั้งค่าตัวแปรสภาพแวดล้อมเพื่อใช้งานโดย Tomcat เท่านั้นคุณควรใช้ CATALINA_OPTS ในขณะที่คุณกำลังตั้งค่าตัวแปรสภาพแวดล้อมที่จะใช้โดยแอปพลิเคชัน java อื่น ๆ เช่น JBoss คุณควรใส่ การตั้งค่าของคุณใน JAVA_OPTS

ที่มา: CATALINA_OPTS v JAVA_OPTS - ต่างกันอย่างไร?


11
นอกจากนี้ยังมีประโยชน์ที่จะคิดว่าพวกเขาเป็น "ฉันต้องการอะไรบางอย่างสำหรับการเริ่มต้นใช้งาน Tomcat" หรือ "ฉันต้องการอะไรสำหรับทุก ๆ JVM" สมมติว่าเรากำลังพยายามตั้งค่าการตรวจสอบ JMX ในสภาพแวดล้อมแบบกระจายและเราอยู่เบื้องหลังไฟร์วอลล์ - เราต้องใช้พอร์ต RMI สองพอร์ตเพื่อตั้งค่า Djava.rmi.server เป็นอาร์กิวเมนต์เริ่มต้น เราจะทำเช่นนี้ในฐานะ JAVA_OPT หรือไม่การปิดระบบจะเริ่มการทำงานของ JVM ใหม่ซึ่งพยายามฟังบนพอร์ต JMX ไม่สามารถคว้าได้เนื่องจาก tomcat มีการฟังอยู่แล้วและ JVM จะหยุดโดยมีข้อผิดพลาดเกี่ยวกับการใช้งานอยู่แล้วไม่ใช่สิ่งที่เรา ต้องการหรือไม่
Joao Figueiredo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.