Bas*_*que 12 configuration tomcat
我编辑了 Tomcat 8conf
文件夹中的“server.xml”文件。我Host
为一个新网站添加了一个新标签。
我必须重新启动 Tomcat 服务器吗?
我可以让 Tomcat 解析并应用新编辑的server.xml
吗?
daw*_*wud 15
我首先要说这个问题没有完全正确地提出,因为很有可能在不重新启动 Tomcat 的情况下实际编辑文件,但是正在运行的进程会忽略这些更改。
真正的问题是如何在server.xml
不重新启动 Tomcat 的情况下应用更改。
从Tomcat 在线文档的启动过程和类加载器页面收集信息,可以更详细地了解这一点。
更具体地说,在serverStartup.txt和启动过程的UML图中有描述,相关部分可以总结如下:
Run Code Online (Sandbox Code Playgroud)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 以检查所有可用属性:
并检查所有可用的操作(其中之一作为示例如下所示):
归档时间: |
|
查看次数: |
27994 次 |
最近记录: |