如何将apache tomcat的server.xml拆分成几个单独的文件?

Posted

技术标签:

【中文标题】如何将apache tomcat的server.xml拆分成几个单独的文件?【英文标题】:How to split server.xml of apache tomcat into several separate files? 【发布时间】:2012-05-13 16:20:33 【问题描述】:

我使用apache tomcat 7在单机上运行了很多ofo虚拟主机,我在server.xml中为每个虚拟主机插入了Host标签,这样我就可以集中管理它们了。 但是现在,在添加了很多主机标签之后,server.xml 变得如此之大,我正在寻找一种方法将每个与虚拟主机相关的标签放在一个单独的 xml 文件中(与 apache 对 httpd.conf 和虚拟主机所做的完全相同)管理)。例如,我为每个主机创建一个单独的 xml 文件并将它们全部放入一个目录并强制 tomcat 加载它们! 有什么想法???

【问题讨论】:

【参考方案1】:

以下应该可以工作,但不是由于 Tomcat 错误。我已经修复了主干 (r1333827) 和 7.0.x (r1333829) 中的错误,该修复将包含在 Tomcat 7.0.28 及以后的版本中。我可以发誓这以前有效。可能是 JVM 中的 xml 解析器在某个时候被收紧了,这仍然适用于旧 JVM 版本,但我还没有测试过。

您可以使用 XML 实体 - 每个主机一个。例如:

<server> 元素之前插入以下内容:

<!DOCTYPE server-xml [
  <!ENTITY host1 SYSTEM "host1.txt">
]>

host1.txt 的内容就是你要定义的宿主元素:

<Host>
  ...
</Host>

然后将其插入到 server.xml 中的 &lt;engine&gt; 元素中,如下所示:

<engine ...>
  &host1;
</engine>

根据需要对任意数量的主机重复。

【讨论】:

谢谢,这个解决方案可以正常工作,但是当我们添加新主机时,是否我们不需要更改 server.xml 来添加任何额外的命令?类似于使用 如何指定要包含的 xml 文件的绝对路径? 只指定绝对路径行不通(/my/absolute/path/file.txt)? 额外的服务器文件需要以“.txt”结尾还是以“xml”结尾?示例 host1.txt 是否可以有自己的 标签来包含附加文件?例如,您可以从 server.xml 中包含 hosts.txt,其中包含所有其他主机。

以上是关于如何将apache tomcat的server.xml拆分成几个单独的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Apache Tomcat 目录遍历漏洞

Apache Tomcat 1.7 如何将附加参数传递给 JAAS

Tomcat6.0常用修改操作汇总

如何将 mod_rewrite 与 Apache -> mod_jk -> tomcat 设置一起使用?

如何将apache tomcat的server.xml拆分成几个单独的文件?

如何在一个 Tomcat + Apache 上部署多个 Grails 应用程序?