AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 695553
Accepted
Basil Bourque
Basil Bourque
Asked: 2015-05-31 12:29:58 +0800 CST2015-05-31 12:29:58 +0800 CST 2015-05-31 12:29:58 +0800 CST

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

  • 772

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

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

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

configuration
  • 2 2 个回答
  • 30409 Views

2 个回答

  • Voted
  1. Best Answer
    dawud
    2015-06-01T04:12:07+08:002015-06-01T04:12:07+08:00

    我首先要说这个问题并不完全正确,因为很有可能在不重新启动 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 上的示例操作

    • 17
  2. Basil Bourque
    2015-05-31T14:21:22+08:002015-05-31T14:21:22+08:00

    否。需要重新启动。

    <Context>提及的 Tomcat 文档页面:

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

    • 11

相关问题

  • 小型企业的服务器虚拟化/RAID 配置

  • httpd.conf 用于不区分大小写的文件服务

  • Windows Server 2003 DNS 添加的 CNAME 不起作用

  • 我应该使用什么策略在 linux 上安装 smtp 服务器?用于多线程服务

  • 为什么我的站点在配置为直通身份验证时使用 IUSR 帐户?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve