Настройка обслуживания Tomcat6;программно объединить JvmOptions, используя пакетный файл - PullRequest
0 голосов
/ 04 июля 2011

Это может быть немного базовым вопросом, но я не могу найти ответ в Интернете.Я пытаюсь автоматически настроить Tomcat как службу через командный файл.

Мой пакетный файл в настоящее время выглядит следующим образом:

set memSize=512
set jvmOptions="-XX:MaxPermSize=512M"
ECHO Setting up tomcat as a service. 
call service.bat install
ECHO Setting the memory allocation to a maximum of %memSize%
ECHO Using JVM options %jvmOptions%
Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" --JvmOptions=%jvmOptions%

Проблема, с которой я сталкиваюсь, заключается в том, что при запуске переключателя --JvmOptions перезаписываются все текущие параметры Java, которые установлены в tomcat6w.EXE.

Итак, мой вопрос: кто-нибудь знает, как сделать так, чтобы ключ --JvmOptions конкатенировал переданное значение в конец текущего значения?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 09 августа 2011

После долгих трудных поисков мне удалось найти ответ в примере кода. Но затем, чтобы заставить меня чувствовать себя очень глупо, я заметил, что ответ был также здесь прямо у меня на носу на странице Tomcat6 Windows Service How To. При замене - на ++ опция объединяется, а не заменяется оригиналом.

Так что пакетный файл стал.

set memSize=512
set jvmOptions="-XX:MaxPermSize=512M"
ECHO Setting up tomcat as a service. 
call service.bat install
ECHO Setting the memory allocation to a maximum of %memSize%
ECHO Using JVM options %jvmOptions%
Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" ++JvmOptions=%jvmOptions%

Спасибо.

0 голосов
/ 06 апреля 2015

Немного старого поста, но я должен сделать кучу деинсталляций / установок Tomcat из-за обновления другого приложения (термин, который я использую свободно) и пытался выяснить, как сделать нечто подобное, чтобы избежать использования пользовательского интерфейсаи обеспечить согласованность.

Некоторые советы по написанию сценариев (основанные на моем опыте до сих пор):

REM -- Use variables for the Tomcat install directory & executable:
set TomcatDir=%ProgramFiles%\Tomcat
set TomcatExe=%TomcatDir%\bin\Tomcat7.exe

REM -- If using multiple instances, turn these in to array
set TomcatInstance[1]=Tomcat7
set TomcatInstance[2]=MyAppInstance1
set TomcatInstance[3]=MyAppInstance2
set TomcatInstance[4]=MyAppInstance3
set TomcatInstance[5]=MyAppInstance4

REM -- When updating/adding Java options and you need to use a ";" between
REM -- values, single-quote the semi-colon, ';' so it isn't intepretted as a CrLf
REM -- For example,
call "%TomcatExe%" //US/%TomcatInstance% ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"

REM -- So to ensure all instances have the same settings...
for /L %I in (1,1,5) do (
    call "%TomcatExe%" //US/!TomcatInstance[%I]! ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"
)

REM -- Block scripts sections with setlocal/endlocal
REM -- "EnableDelayedExpansion" allows the above delayed variable expansion to occur
::--==--==--==--==--==--==--==--==--==--==
:Routine_Name
::--==--==--==--==--==--==--==--==--==--==
setlocal EnableDelayedExpansion
echo script commands go here
endlocal
goto :EOF

Примечание. Это было бы намного проще в реальном языке сценариев (vbs, js или ps), но мне нужно оставить скрипт "легким", чтобы его можно было модифицировать для тех, кто меня заменит, когда я покину свой текущий концерт.

FWIW, документация для Tomcat7: http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html.

0 голосов
/ 05 августа 2011

Может ли это быть так просто (если я правильно понимаю ваш вопрос)

set memSize=512

REM I removed the quotes and reused the variable in its own definition
set jvmOptions=%jvmOptions%-XX:MaxPermSize=512M

ECHO Setting up tomcat as a service. 
call service.bat install
ECHO Setting the memory allocation to a maximum of %memSize%
ECHO Using JVM options %jvmOptions%

REM Added the quotes back here
Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" --JvmOptions="%jvmOptions%"
...