Установка JAVA_OPTS при установке Tomcat в качестве службы Windows

Я запускаю несколько экземпляров Tomcat на одном хосте и устанавливаю их как службы Windows. Конечно, это с разными портами для каждого из экземпляров Tomcat. Теперь я пытаюсь извлечь номера портов из файла server.xml и передать их как параметры JVM, чтобы файл server.xml выглядел одинаково для всех экземпляров Tomcat. В настоящее время порт коннектора в моем файле server.xml для каждого экземпляра выглядит так:

Экземпляр 1

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

Экземпляр 2

<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

и я пытаюсь сделать так, чтобы это выглядело

<Connector port="${port.http}" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

Как упоминалось в этом ответе, я могу отредактировать параметры вручную, чтобы добавить параметр -Dport.http=8080 или -Dport.http=8180, и он отлично работает, но что Мне нужно, чтобы этот параметр JVM был установлен, когда Tomcat устанавливается как служба Windows.

Ниже приведено содержимое файла .bat, который я запускаю для установки Tomcat экземпляра 1 в качестве службы Windows (то же самое для экземпляра 2, за исключением CATALINA_BASE, порта и имени службы). Как видите, я также пытаюсь установить JAVA_OPTS до того, как он будет установлен как служба, но, похоже, мне с этим не повезло. Я также пробовал использовать двойные кавычки, такие как CALL SET "JAVA_OPTS=-Dport.http=8080" и CALL SET JAVA_OPTS="-Dport.http=8080".

CALL SET JAVA_HOME=D:\Java
CALL SET CATALINA_BASE=D:\instance1
CALL SET JAVA_OPTS=-Dport.http=8080
CALL CD %CATALINA_HOME%\bin
service install instance1

Кто-нибудь может помочь, пожалуйста?


person Prasann    schedule 27.02.2019    source источник
comment
используйте setevn.bat или что-то подобное. Это в каталоге Tomcats bin. Он включен в процедуру запуска серверов.   -  person Antoniossss    schedule 27.02.2019
comment
Привет @ antoniossss, Спасибо за ваш ответ. Я также пытался использовать setenv.bat, но я не думаю, что на параметры оттуда ссылаются, когда Tomcat работает как служба Windows.   -  person Prasann    schedule 27.02.2019
comment
хорошо, но я тоже пробовал, но я не могу использовать ${port.http} в server.xml   -  person Prasann    schedule 27.02.2019


Ответы (2)


Если вы хотите установить -D параметры в качестве состояний в заголовке, чем вас интересует --JvmOptions https://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html

eg

Install the service named 'Tomcat7'
C:\> tomcat7 //IS//Tomcat7 --DisplayName="Apache Tomcat 7" ^
     --Install="C:\Program Files\Tomcat\bin\tomcat7.exe" --Jvm=auto ^
     --StartMode=jvm --StopMode=jvm ^
     --JvmOptions -DwhateverHere
     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop
person Antoniossss    schedule 27.02.2019
comment
Привет @antoniossss, спасибо за ваш ответ. При этом я вижу настройку параметра, который я хотел установить, но не параметры по умолчанию (например: -Dcatalina.home и -Dcatalina.base), которые устанавливаются, когда я использую команду service install. Вы знаете, почему или способ сохранить их? В противном случае мне придется вручную установить все это. - person Prasann; 27.02.2019

В конце концов я смог решить эту проблему, установив JvmArgs в пакетном файле, который я использую для установки «Tomcat» в качестве службы Windows. Содержимое моего файла .bat выглядит следующим образом:

CALL SET JAVA_HOME=D:\Java
CALL SET CATALINA_BASE=D:\instance1
CALL SET JAVA_OPTS=-Dport.http=8080
CALL SET JvmArgs=-Dport.http=8080;-Dport.shutdown=8005 // This line did the trick
CALL CD %CATALINA_HOME%\bin
service install instance1

Я обнаружил это, когда просматривал код в файле service.bat, чтобы проверить, как установлены параметры JVM, и обнаружил, что %JvmArgs% добавлено в конце, как показано ниже:

--JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-D%ENDORSED_PROP%=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;%JvmArgs%" ^

Надеюсь, это поможет кому-то найти аналогичную конфигурацию :)

person Prasann    schedule 27.02.2019