【问题标题】:How do I set my foo.war's root path to be /foo/bar instead of /foo?如何将 foo.war 的根路径设置为 /foo/bar 而不是 /foo?
【发布时间】:2015-03-21 21:38:59
【问题描述】:

我有一个编译为 foo.war 的项目。当我将它放入 Tomcat 时,可以在 localhost:8080/foo/ 访问索引页面,其中各种 servlet 和资产作为 /foo/ 的子目录

我想要将 /foo/ 部分转换为 /foo/bar/ ,而无需修改每个 servlet 并将我的所有静态资产移动到 /bar/ 文件夹中。这可能吗?

我可以控制 web.xml 文件,但不能控制它所托管的最终 Tomcat 服务器。我认为在 web.xml 中有一种方法可以做到这一点,但我似乎无法弄清楚如何。

【问题讨论】:

  • 我不确定这是否可能......这来自here。 “如果要使用与基本文件名无关的上下文路径部署 WAR 文件或目录,则必须使用以下选项之一来防止双重部署:1.) 禁用 autoDeploy 和 deployOnStartup 并定义所有server.xml 中的上下文 2.) 在主机的 appBase 之外找到 WAR 和/或目录,并使用带有 docBase 属性的 context.xml 文件来定义它。”这两个选项都需要服务器访问权限,对吗?
  • 没关系,我认为这不适用。

标签: java tomcat servlets web.xml


【解决方案1】:

最简单(也是推荐)的方法是重命名foo.warfoo#bar.war。这就是所有需要的。
Documentation (Tomcat 7)

您并没有说您使用的是什么版本的 Tomcat。我假设它是一些不超过 3 年的现代版本。

【讨论】:

  • 所以.. 它以正确的 URL 显示在管理器应用程序中,但现在 servlet 不会实际启动:严重:配置类 com.netflix.karyon.server.guice 的应用程序侦听器时出错.KaryonGuiceContextListener java.lang.IllegalStateException: java.io.FileNotFoundException: /usr/local/apache-tomcat-7.0.57/webapps/watson-dashboard%23ui/WEB-INF/lib/archaius-core-0.6.0.jar (没有这样的文件或目录)在 org.apache.xbean.finder.archive.JarArchive.(JarArchive.java:55)
猜你喜欢
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多