gpt4 book ai didi

java - Tomcat:以编程方式更改虚拟主机?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:38 26 4
gpt4 key购买 nike

Tomcat 提供内置的“虚拟主机”支持:引擎/Web 应用程序可以配置为负责域列表。必须使用特殊的 xml 指令将这些域放入 server.xml/context.xml 文件中。

=> 是否有可能以编程方式更改 Tomcat 配置(通常),尤其是 Web 应用程序/引擎的“虚拟主机”?

例如,如果一个新用户注册,我必须将他的域添加到“接受的虚拟主机/域”列表中。我目前想到的唯一方法是通过脚本更改 xml 文件,然后重新启动 Tomcat。

有什么方法可以通过一些 Java 方法以编程方式添加它们吗?

非常感谢!简

最佳答案

Tomcat 提供 API 来创建新的虚拟主机。要访问为此所需的包装器对象,您需要实现一个 ContainerServlet。您可以像这样创建虚拟主机,

    Context context = (Context) wrapper.getParent();
Host currentHost = (Host) context.getParent();
Engine engine = (Engine) currentHost.getParent();

StandardHost host = new StandardHost();
host.setAppBase(appBase);
host.setName(domainName);

engine.addChild(host);

您需要确保 appBase 目录存在,并且您必须找到将新主机持久保存到 server.xml 的方法,否则您会在重新启动时丢失主机。

但是,这种方法很少奏效。如果您的用户运行他们自己的应用程序,您确实希望运行单独的 Tomcat 实例,以便更好地对应用程序进行沙盒处理。例如一个应用内存不足不会杀死所有其他应用。

如果您提供应用程序,您可以只使用一个主机 (defaultHost)。您可以从 Host header 获取域名,并在您的代码中执行任何特定于域的操作。

关于java - Tomcat:以编程方式更改虚拟主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com