サーバーを再起動せずにTomcatで「server.xml」を編集しますか?


10

Tomcat 8のconfフォルダーにある「server.xml」ファイルを編集しました。Host新しいWebサイトに新しいタグを追加しました。

Tomcatサーバーを再起動する必要がありますか?

Tomcatに新しく編集したものを解析して適用させることはできますserver.xmlか?



@dawudリンクのおかげで、私たちは話をしている<Host>、ではありません<Context>
バジルブルク

2
とにかく、重要な部分はserver.xml、起動時に一度解析されることです。再起動しないとリロードできません。
dawud

@dawudありがとう。私はその言及を今見ます。これを回答にして、この質問を閉じます。
バジルブルク

回答:


14

まず、Tomcatを再起動せずにファイルを実際に編集することは可能ですが、変更は実行中のプロセスによって無視されるため、質問は完全には正しく行われていません。

本当の問題は、server.xmlTomcatを再起動せずに変更を適用する方法です。

起動プロセスとTomcatのオンラインドキュメントのクラスローダーページから情報を収集すると、これをより詳細に理解できます。

より具体的には、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を再起動する必要がある理由の質問には実際には答えません。

答えはということですいくつかのそれの一部は、実行時に動的に変更することができJMXを使用します。これを可能にするには、適切なMBeanを登録する必要があり(上記のb6ステップ)、SET操作を受け入れる必要があります(一部のMBeanにはGETインターフェースしかない)。

あなたの特定のケースでは、準備ができていないため、実行時に新しいホストを作成して登録する方法はありません。これが、Bootstrapクラスローダーがそのオブジェクトをインスタンス化して登録するためにTomcatプロセスを再起動する必要がある理由です。 JMXエージェント。

その後、jconsole任意のJDKにバンドルされているなどのJMXクライアントからそのホストを変更することができます。

jconsoleJMX対応のTomcatに接続し、ホストMBeanを参照して、使用可能なすべての属性を確認します。

ホストMBeanの属性を示すjconsole

使用可能なすべての操作を確認します(以下の例の1つを以下に示します)。

ホストMBeanでの操作例を示すjconsole


1
JMXを紹介するための+1。
Raja Anbazhagan

7

いいえ。再起動が必要です。

<Context>言及のためのTomcat docページ:

…メインのconf / server.xmlファイルは、Tomcatを再起動しないとリロードできません。


1
それらの投票は@dawudに行く必要があります...コメントはもうありません。we’re talking about <Host>, not <Context>.-1申し訳ありませんが、私がこれを行うことはめったにありませんが、そこに私がしなければならないことは誰かのための貧しい答え
krisFR

@krisFR dawudはいつでも、または今でも、いつでも自由に回答を書くことができました。誰もが賛成投票でこのゲームをプレイするわけではありません。
バジルブルク2015年

1
@ krisFR、Basil Bourqueこれをより一般的な方法でカバーするために、より詳細な回答を追加しました。お役に立てれば幸いです。
dawud
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.