在Tomcat中编辑“ server.xml”而不重启服务器?


10

我编辑了Tomcat 8 conf文件夹中的“ server.xml”文件。我Host为新网站添加了新标签。

我必须重新启动Tomcat服务器吗?

我可以让Tomcat解析并应用新编辑的server.xml吗?



@dawud感谢您提供的链接,但我们所谈论的<Host>不是<Context>
罗勒·布尔克

2
无论如何,重要的部分是server.xml在启动时解析一次。不重新启动就无法重新加载。
dawud

@dawud谢谢。我现在看到那个提法。我将此作为答案,因此可以关闭此问题。
罗勒·布尔克

Answers:


14

我首先要说的是,这个问题并未完全正确提出,因为很可能无需重新启动Tomcat即可实际编辑文件,但是正在运行的进程会忽略这些更改。

真正的问题是如何在server.xml不重新启动Tomcat的情况下应用更改。

启动过程和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.

这是在创建servlet引擎(Catalina)的Bootstrap类加载器之后发生的。

有了这些信息,现在很清楚在启动过程中何时server.xml解析该文件,但是并不能真正回答为什么需要重新启动Tomcat才能对该文件应用更改的问题。

答案是它的某些部分可以在运行时使用JMX进行动态修改。为此,必须注册适当的MBean(上述b6步骤),并且还必须接受SET操作(某些MBean仅具有GET接口)。

在您的特定情况下,由于没有任何准备,因此无法在运行时创建和注册新主机,这就是为什么您必须重新启动Tomcat进程以使Bootstrap类加载器实例化该对象并向其注册的原因。 JMX代理。

之后,可以从JMX客户端(例如jconsole与任何JDK捆绑在一起的)修改该主机。

将您连接jconsole到启用了JMX的Tomcat,并浏览Host MBean以检查所有可用属性:

jconsole显示主机MBean的属性

并检查所有可用的操作(以下示例为其中之一):

jconsole显示了主机MBean上的示例操作


1
+1,向我介绍JMX。
Raja Anbazhagan

7

否。需要重新启动。

Tomcat文档页面中<Context>提到:

…不重新启动Tomcat就无法重新加载conf / server.xml主文件。


1
那些支持者应该去@dawud ...更多评论。对于说we’re talking about <Host>, not <Context>.-1抱歉的人的回答很差,我很少这样做,但是我必须...
krisFR 2015年

@krisFR dawud随时随地都可以自由编写答案。并非每个人都为此游戏投票。
罗勒·布尔克

1
@krisFR,罗勒·布尔克(Basil Bourque)我添加了更详细的答案以更一般的方式介绍此内容。希望它有用。
dawud
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.