2011-07-03 5 views
0

これは少し基本的な質問をするかもしれませんが、私はウェブ上で答えを見つけることができません。私は自動的にバッチファイルを介してサービスとしてtomcatを設定しようとしています。Tomcat6サービスの設定。バッチファイルを使用してJvmOptionsをプログラムで連結してください

私のバッチファイルは現在、次のようになります。

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スイッチを実行するとtomcat6w.exeに設定されているすべての現在のJavaオプションを上書きすることです。

私の質問は誰も、現在の値の最後に渡された値を--JvmOptionsスイッチで連結する方法を知っていますか? (私が正しくあなたの質問を理解していれば)、事前

答えて

0

このような単純なものでした。しかし、私が非常に愚かな気分にさせるために、私は答えがhere Tomcat6 WindowsサービスのHow Toページの私の鼻のすぐ下にあることに気付きました。 - with ++オプションを置き換えることによって、元のファイルを置き換えるのではなく、連結されます。

これでバッチファイルが作成されました。

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

おかげで、それは私がコード例で答えを見つけるために管理しなかった長いハード検索した後

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%" 
+0

ありがとうございますが、問題はjvmOptionsがTomcat6サービスのインストールに固有の環境変数ではないことです。助けてくれてありがとう。 – Klee

0

古いポストだけど、別のアプリケーションがアップグレードされているためにTomcatのアンインストールやインストールが必要なんですが(私が大まかに使っている用語です)、これを避けるために似たようなやり方を考えようとしていました。 UIと一貫性を確保します。

いくつかのスクリプトのヒント

(これまでの私の経験に基づいて):

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です。

関連する問題