Как установить JAVA_HOME или CATALINA_HOME, если у меня есть более одной версии, используемой для проектов?

У меня разные проекты с использованием другой версии JDK (5.0, 6.0) и Tomcat (6.0, 7.0), так как должны быть установлены мои JAVA_HOME и CATALINA_HOME в переменных среды?

Или, может быть, не нужно устанавливать JAVA_HOME и CATALINA_HOME в переменные среды, если я запускаю свое приложение через файл .War? Сервер jdk/tomcat будет запускать версию, которую я выбрал, когда я ее упаковал (через Eclipse → настройки...).

Ответы

Ответ 1

Внутри запуска tomcat script /bin/catalina.sh используются следующие переменные среды:

  • JAVA_HOME - это путь JDK, который используется для запуска tomcat и веб-приложений.
  • CATALINA_HOME - это путь к файлам двоичных файлов tomcat.
  • CATALINA_BASE - это путь к файлам конфигурации tomcat

Итак, как насчет этого подхода? Например:

Установите JDK 5.0 на: /opt/jdk5
Установите JDK 6.0 на: /opt/jdk6
Установите tomcat 6.0 на: /opt/tomcat6
Установите tomcat 7.0 на: /opt/tomcat7

Каждое из ваших веб-приложений имеет свою собственную папку для хранения собственной конфигурации tomcat. Например:  /home/web1 для веб-приложения 1
 /home/web2 для веб-приложения 2

Внутри каждой из этих папок нам понадобятся следующие подкаталоги: conf, logs, temp, webapps и work. Просто скопируйте эти подкаталоги из папки установки tomcat (т.е. /opt/tomcat7/). Затем установите .war в соответствующие папки webapps (например, /home/web1/webapps/webappl.war, /home/web2/webapps/webapp2.war).

Наконец, напишите script, чтобы запустить tomcat, используя разные JDK и tomcat для каждого приложения. Например, чтобы запустить web1, ваш script должен выглядеть как:

JAVA_HOME=/path/to/jdk  #eg./opt/jdk6 
CATALINA_HOME=/path/to/tomcat/installation #eg./opt/tomcat7 
CATALINA_BASE=/home/web1/
export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE
$CATALINA_HOME/bin/catalina.sh start

Ссылка: http://www.mohancheema.net/appserver/setting-tomcat-to-run-mutiple-instances-of-it

Ответ 2

Если вы запускаете его в Eclipse, вы можете использовать диалог "Запуск конфигурации", чтобы установить любые переменные окружения, которые необходимо изменить. Они автоматически устанавливаются при выполнении указанной конфигурации запуска. Чтобы использовать это, щелкните правой кнопкой мыши по вашему проекту, выберите "Выполнить" → "Запустить конфигурации". В этом случае вы можете выбрать "Запустить конфигурацию" и перейти к вкладке "Среда", и там вы можете указать нужные вам нужные переменные, а также вы можете переопределить все, что установлено O/S.

Если вы хотите сделать это за пределами затмения, и вы сохраните копию Tomcat, выделенную для каждого проекта, отредактируйте файлы startup.sh или startup.bat в зависимости от вашей ОС, а затем явно установите переменные среды.

Ex. Для Project 1:, поверх файла /opt/apache -tomcat6-1/bin/startup.sh добавьте эти строки

экспорт JAVA_HOME = '/opt/jdk1' экспорт JAVA_HOME = '/opt/apache-tomcat6-1'

Ex. Для Project 2:, поверх файла /opt/apache -tomcat6-2/bin/startup.sh добавьте эти строки

экспорт JAVA_HOME = '/opt/jdk2' экспорт JAVA_HOME = '/opt/apache-tomcat6-2'

Если у вас нет выделенной копии Tomcat, вы можете создать оболочку script/пакетный файл для каждого проекта, который установит необходимые переменные среды, подобные этому, а затем вызовет соответствующие startup.sh или startup.bat файл.

Ответ 3

Эти переменные используются сценариями, запускающими Tomcat, и не имеют значения в противном случае. Вы можете установить их непосредственно перед запуском startup.sh script, или вы можете отредактировать catalina.sh script, чтобы установить значения в самом script (это хороший способ сделать это, поскольку catalina.sh разделяется другими скриптами), или вы можете написать свои собственные скрипты, которые устанавливают переменные, а затем вызывают сценарии tomcat... Существует много возможностей. Вы просто не можете установить переменные глобально.