Tomcat 8のconf
フォルダにある「server.xml」ファイルを編集しました。新しいHost
タグを新しいWebサイトに追加しました。
Tomcatサーバーを再起動する必要がありますか?
新しく編集されたserver.xml
をTomcatで解析して適用できますか?
まず、Tomcatを再起動せずに実際にファイルを編集することは可能ですが、変更は実行中のプロセスによって無視されるため、質問は完全には正しく行われていません。
本当の問題は、Tomcatを再起動せずにserver.xml
の変更を適用する方法です。
Tomcatのオンラインドキュメントの startup process および class-loader ページから情報を収集すると、これをより詳細に理解できます。
具体的には、 serverStartup.txt および 起動プロセスのUML図 で説明されており、関連する部分は次のように要約できます。
Sequence 1. Start from Command Line ... Sequence 2. Process command line argument (start, startd, stop, stopd) Class: org.Apache.catalina.startup.Bootstrap (assume command->start) What it does: a) Catalina.setAwait(true); b) Catalina.load() b3) createStartDigester() Configures a digester for the main server.xml elements b4) Load the server.xml and parse it using the digester Parsing the server.xml using the digester is an automatic XML-object mapping tool, that will create the objects defined in server.xml Startup of the actual container has not started yet. b6) Calls initialize on all components, this makes each object register itself with the JMX agent.
これは、サーブレットエンジン(Catalina)のBootstrapクラスローダーの作成後に発生します。
この情報があれば、スタートアッププロセスでserver.xml
ファイルがいつ解析されるかは明らかですが、このファイルに変更を適用するためにTomcatを再起動する必要がある理由の質問には実際には答えません。
その答えは、some部分が実行時に動的に変更できるということです JMXを使用して 。これを可能にするには、適切なMBeanを登録する必要があり(上記のb6ステップ)、SET操作を受け入れる必要があります(一部のMBeanにはGETインターフェースしかない)。
あなたの特定のケースでは、準備ができていないため、実行時に新しいホストを作成して登録する方法はありません。これが、Tomcatプロセスを再起動してBootstrap =クラスローダーはそのオブジェクトをインスタンス化し、JMXエージェントに登録します。
その後、任意のJDKにバンドルされているjconsole
などのJMXクライアントからそのホストを変更できます。
jconsole
をJMX対応のTomcatに接続し、ホストMBeanを参照して、使用可能なすべての属性を確認します。
使用可能なすべての操作を確認します(例として以下に示すものの1つ)。
<Context>
のTomcatドキュメントページには、次のように記載されています。
…メインのconf/server.xmlファイルは、Tomcatを再起動しないとリロードできません。