CATALINA_OPTS vs JAVA_OPTS - Apakah perbedaannya?

105

Saya mencoba untuk mencari tahu perbedaan antara variabel Apache Tomcat - CATALINA_OPTSdan JAVA_OPTSdalam SO dan terkejut melihat bahwa belum ada pertanyaan / jawaban yang diposting di sini. Jadi saya berpikir untuk membagikannya di sini (dengan jawaban) setelah mengetahui perbedaannya. Cek jawaban / perbedaannya di bawah ini.

CATATAN: Pada saat posting ini, kami menjalankan Apache Tomcat v6.0.10 dengan JDK 6u32 di CentOS5 64-bit arch.

Gnanam
sumber

Jawaban:

156

Ada dua variabel lingkungan - CATALINA_OPTSdan JAVA_OPTS- yang keduanya digunakan dalam skrip startup dan shutdown catalina.sh untuk Tomcat. Mereka dijelaskan dalam komentar di dalam file itu sebagai:

[JAVA_OPTS]: (opsional) Opsi runtime Java digunakan ketika perintah "start", "stop" atau "run" dijalankan

dan

[CATALINA_OPTS]: (opsional) Opsi runtime Java digunakan saat perintah "start" atau "run" dijalankan

Jadi mengapa ada dua variabel berbeda? Dan apa bedanya?

Pertama, apa pun yang ditentukan dalam variabel SALAH SATU diteruskan, identik, ke perintah yang memulai Tomcat - perintah "start" atau "run" - tetapi hanya nilai yang ditetapkan di JAVA_OPTS yang diteruskan ke perintah "stop". Itu mungkin tidak ada bedanya dengan bagaimana Tomcat berjalan dalam praktiknya karena itu hanya mempengaruhi akhir lari, bukan awal.

Perbedaan kedua lebih halus. Aplikasi lain juga dapat menggunakan JAVA_OPTS, tetapi hanya Tomcat yang akan menggunakan CATALINA_OPTS. Jadi jika Anda mengatur variabel lingkungan untuk digunakan hanya oleh Tomcat, Anda akan disarankan untuk menggunakan CATALINA_OPTS, sedangkan jika Anda mengatur variabel lingkungan untuk digunakan oleh aplikasi java lain juga, seperti oleh JBoss, Anda harus meletakkan pengaturan Anda di JAVA_OPTS.

Sumber: CATALINA_OPTS v JAVA_OPTS - Apa bedanya?

Gnanam
sumber
11
Ini juga berguna untuk menganggap mereka sebagai "apakah saya memerlukan sesuatu untuk startup tomcat" atau "apakah saya memerlukan sesuatu untuk setiap JVM". Katakanlah kita mencoba untuk mengatur pemantauan JMX pada lingkungan terdistribusi dan kita berada di belakang firewall - kita akan membutuhkan dua port RMI untuk mengatur Djava.rmi.server sebagai argumen startup . Apakah kita akan melakukan ini sebagai JAVA_OPT, shutdown mengaktifkan JVM baru yang mencoba mendengarkan pada port JMX, tidak dapat mengambilnya karena tomcat sudah mendengarkannya dan JVM akan berhenti dengan kesalahan tentang hal itu sudah digunakan - bukan yang kita mau kan?
Joao Figueiredo