私はApacheTomcat変数の違いを見つけようとしていましたがCATALINA_OPTS
、JAVA_OPTS
SOでは、まだここに質問/回答が投稿されていないことに驚いています。そこで、違いを見つけて、ここで(答えを付けて)共有することを考えました。以下の答え/違いを確認してください。
注:この投稿の時点では、CentOS564ビットアーチ上でJDK6u32を使用してApacheTomcatv6.0.10を実行しています。
2つの環境変数(CATALINA_OPTS
およびJAVA_OPTS
)があり、どちらもTomcatのcatalina.sh起動およびシャットダウンスクリプトで使用されます。それらは、そのファイル内のコメントで次のように説明されています。
[JAVA_OPTS] :(オプション)「start」、「stop」、または「run」コマンドの実行時に使用されるJavaランタイムオプション
と
[CATALINA_OPTS] :(オプション)「start」または「run」コマンドの実行時に使用されるJavaランタイムオプション
では、なぜ2つの異なる変数があるのでしょうか。そして、違いは何ですか?
まず、EITHER変数で指定されたものはすべて、Tomcatを起動するコマンド(「start」または「run」コマンド)に渡されますが、JAVA_OPTSで設定された値のみが「stop」コマンドに渡されます。これは、Tomcatが実際に実行される方法に影響を与えない可能性があります。これは、実行の開始ではなく、実行の終了にのみ影響するためです。
2番目の違いはもっと微妙です。他のアプリケーションもJAVA_OPTSを使用する場合がありますが、TomcatのみがCATALINA_OPTSを使用します。したがって、Tomcatのみで使用する環境変数を設定する場合は、CATALINA_OPTSを使用することをお勧めします。一方、JBossなどの他のJavaアプリケーションでも使用する環境変数を設定する場合は、次のように設定する必要があります。 JAVA_OPTSでの設定。
@joaoのコメントで説明されているように、シャットダウン中、Tomcatは複数のVMを起動します。tomcat shutdowm中にデータを記録する場合は、JAVA_OPTSではなくCATALINA_OPTSを使用してください。良い例は、jacoco.exec中にデータを保存したい場合、JAVA_OPTSではなくCATALINA_OPTSを使用する必要がある場合です。
これを追加したいと思いJAVA_OPTS
ますCATALINA_OPTS
。相互に補完的です。両方の環境変数を定義すると、両方のコンテンツが連結され、上記のGnanamで説明されているようにstart
andコマンドに渡されます。run
catalina.shの元のソースを参照することもできます