gpt4 book ai didi

Tomcat:一个网络应用程序的两个上下文路径

转载 作者:行者123 更新时间:2023-11-28 21:44:51 26 4
gpt4 key购买 nike

问题是:我有一个网络应用程序,这个网络应用程序部署到 $TOMCAT_HOME/webapps/XXX 目录。我可以通过 http://localhost:8080/XXX 地址访问它但是,我也想访问 http://localhost:8080/YYY 地址上的网络应用程序。我在 server.xml 中添加了以下内容:

<Server>
<Service>
<Engine>
<Host>
.......
<Context path="/YYY" docBase="XXX"></Context>
</Host>
</Engine>
</Service>
</Server>

它有所帮助,但 Tomcat 启动了两个 Web 上下文并导致了一些其他问题。是否可以为一个网络应用程序创建“多个”地址?

最佳答案

web应用程序的url如下:

PROTOCOL://DOMAIN:PORT/CONTEXT/pagename

在两个不同的地址上有相同的应用程序的解决方案如下:

  1. 如果您只想在协议(protocol)上有所不同(比如 http 和 https),那么只需在 server.xml 中添加 2 个连接器即可。

  2. 如果您想要在域名上有所不同,则可以在 DNS 级别上解决。

  3. 如果你想在上下文名称(web 应用程序名称)上有所不同,你应该把 apache 放在前面(mod_proxy 或 mod_ajp),然后创建一个重写规则(mod_rewrite)。假设将 /a/*/b/* 全部重写为 /c/*

  4. 如果你想在页面名称上有所不同,你应该使用 servlet 映射。

通过mod_proxy把apache放到tomcat前面很容易,网上有很多资源。非常糟糕的是复制应用程序(将所有内容都加载两次)。

关于您的问题,我建议您不要在 server.xml 中重复。

<Context docBase="myapp" path="/address1" reloadable="true" />
<Context docBase="myapp" path="/address2" reloadable="true" />

这对内存、 session 机制、并发性等来说都是 killer

关于Tomcat:一个网络应用程序的两个上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1716525/

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