java - Tomcat 与主机、上下文和 webapp 双实例有关的问题
问题描述
/ ...解释太长且不清楚... /
换句话说,我搜索正确的方式以仅使用(一个或多个)域名(然后是 www.my_domain.it 而不是 www.my_domain.it/appname)访问站点,并且所有这些都必须指向同一个实例webapp 的(以便从您访问的任何域名,始终显示相同的运行时数据)。
所以,是的,我已经在 tomcat/webapps 文件夹中部署了 WAR 文件,现在,正确编辑 conf/server.xml 以获得上述结果,对应于以下之一?
1.
<Host name="my_domain.eu" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.my_domain.eu</Alias>
<Alias>www.my_domain.it</Alias>
<Alias>www.my_domain_2.it</Alias>
<Context path="" docBase="appname" debug="0" privileged="true" />
...
</Host>
2.
<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
<Alias>www.my_domain.eu</Alias>
<Alias>www.my_domain.it</Alias>
<Alias>www.my_domain_2.it</Alias>
<Context path="" docBase="appname" debug="0" privileged="true" />
...
</Host>
3.
<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
<Alias>www.my_domain.eu</Alias>
<Alias>www.my_domain.it</Alias>
<Alias>www.my_domain_2.it</Alias>
<Context path="/appname" docBase="appname" debug="0" privileged="true" />
...
</Host>
4.
<Host name="my_domain.eu" appBase="webapps/appname" unpackWARs="true" autoDeploy="true">
<Alias>www.my_domain.eu</Alias>
<Alias>www.my_domain.it</Alias>
<Alias>www.my_domain_2.it</Alias>
<!-- without context definition -->
...
</Host>
否则,正确的解决方案是什么?谢谢大家!
解决方案
我假设您在webapps
目录中有您的应用程序的一个实例,它会自动部署在其名称下。使用 Context 元素,您可以从文件系统中的任何位置部署应用程序。
但是,最好不要使用此信息编辑 server.xml,而是在 conf/hostname 中创建单独的 context.xml 文件,或者只是部署到主机的 webapps 目录。如果您想更改任何内容,您在 server.xml 中配置的任何内容都需要重新启动服务器。server.xml 之外的配置可以在运行时获取,无需重新启动。
编辑:可能我之前回答的内容并不清楚:
当您使用 Context 元素进行配置时:我建议不要使用 webapps 目录来部署您的 webapps。只需指向您实际部署 webapp 的目录。这将确保没有上下文从webapps/appname
as部署您的应用程序/appname
,即使您的上下文定义指向/
.
另一种方法是使用 webapps 中的名称部署您的应用程序ROOT
- 这是实际部署此 webapp 的快捷方式/
(注意:如果我没记错的话,即使在 Windows 上,目录名或文件名(ROOT.war)的全部大写也是如此)。但是恕我直言,如果您决定使用上下文定义来确定路径(但部署在appbase(webapps
)之外,或者部署在appbase(例如webapps
)部署中,那么会更清楚。
使用 appbase 进行模拟以指向 webapps 中的某个目录将确保您激怒那些期望webapps
目录中的应用程序将部署到 Tomcat 的任何人。这是一种将大量时间用于调试幻象问题的简单方法——不要那样做。
推荐阅读
- html - CSS 使表格高度相等,包括拉伸它们的行跨度垂直标题?
- javascript - 如何读取嵌入到 html 中的 PDF 文件?使用java进行硒测试
- java - 无法将 javafx 应用程序连接到 mysql 数据库
- javascript - JSHint 抑制可选链接的错误
- java - Java 错误:不兼容的类型:不存在类型变量 T 的实例,因此可选
符合 Iterable - java - SpringBoot中AuthenticationSuccessHandler中服务的字段注入
- powershell - PowerShell 脚本消耗所有内存并导致服务器崩溃
- sql - 如何找到具有相同列但不同值的两个表之间的差异?
- r - RVest 抓取数据和图片标题
- python - 如何使用 Tensorflow 设置分类标签并将数据拆分为训练、测试和开发拆分?