CATALINA_OPTS проти JAVA_OPTS - в чому різниця?


105

Я намагався з'ясувати різницю між змінними Apache Tomcat - CATALINA_OPTSі JAVA_OPTSв SO та здивований, побачивши, що тут ще немає жодного питання / відповіді. Тож я подумав поділитися цим тут (з відповіддю) після з'ясування різниці. Відповідь / різницю перевірте нижче.

ПРИМІТКА. Під час цієї публікації ми запускаємо Apache Tomcat v6.0.10 з JDK 6u32 на 64-бітній арці CentOS5.

Відповіді:


156

Існує дві змінні середовища - CATALINA_OPTSі JAVA_OPTS- які використовуються в сценарії запуску та відключення catalina.sh для Tomcat. Вони описуються в коментарях до цього файлу як:

[JAVA_OPTS]: (необов’язково) Параметри виконання Java, які використовуються, коли виконується команда "пуск", "стоп" або "запуск".

і

[CATALINA_OPTS]: (необов’язково) Параметри виконання Java, які використовуються при виконанні команди "пуск" або "запуск"

То чому існують дві різні змінні? І яка різниця?

По-перше, все, що вказано в змінній EITHER, передається ідентично команді, яка запускає Tomcat - команда "start" або "run", але лише команді "stop" передаються значення, встановлені в JAVA_OPTS. Це, мабуть, не має ніякого значення для того, як 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 зупиниться з помилкою про те, що він вже використовується - не те, що ми хочете це?
Жоао Фігейредо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.