java - 在Tomcat7中设置上下文路径以更改ROOT

标签 java tomcat amazon-web-services amazon-ec2 contextpath

所以,这个问题的反面已经被问过并在这里得到回答:How to set the context path of a web application in Tomcat 7.0 .但是,我的应用程序部署为“ROOT”,我需要它在“my-path”可用,而不是将它部署在“my-path”并需要它在“ROOT”可用。我正在试用 Amazon 的 Elastic Beanstalk 产品,部署的 war 将始终获得 ROOT。我对此没有任何控制权,也没有留下 .war 文件。我试图用上述主题来解决我的问题,但似乎将 ROOT 指向另一条路径不起作用,而将另一条路径指向 ROOT 确实有效。

我必须创建一个 AMI,以便在不接触新实例的情况下进行自动缩放。我唯一能做的就是在 webapps 文件夹中创建一个符号链接(symbolic link),将“my-path”指向“ROOT”。我不知道此设置是否会产生重大影响,并且想听听是否有以及可能有什么替代方案可以使用 Tomcat 的设置,甚至是另一个非 Tomcat 解决方案。

谢谢!

更新:一旦我在 webapps 文件夹中创建了带有符号链接(symbolic link)的 AWS AMI 并实际更改了 Elastic Beanstalk 中的 AMI,我发现我原来的解决方案不起作用,因为 Beanstalk 清除了整个 webapps 目录。

最佳答案

实现此目的的一种方法是将应用程序部署为 ROOT,但对其进行配置,以便所有资源都位于 ROOT Web 应用程序的路径/my-app 下。

对于作为 ROOT 部署的现有应用程序,这需要:

  • 将“my-app”目录添加到网络应用程序的根目录,并将所有静态资源从网络应用程序的根目录移动到“my-app”目录。
  • 将路径“/my-app”添加到 web.xml 和/或注释中所有 URL 路径的开头

关于java - 在Tomcat7中设置上下文路径以更改ROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464614/

相关文章:

eclipse - java.lang.IllegalArgumentException : The servlets named [X] and [Y] are both mapped to the url-pattern [/*] which is not permitted 异常

amazon-web-services - 将 lambda 从受支持的运行时更改为 docker 镜像

amazon-web-services - 如果 EKS 工作节点位于私有(private)子网中,则 ELB 停止服务

java - Spring-Batch如何在不同的数据库中写入作业元数据?

java - 如何序列化包含java中对象的对象?

java - HTTP Status 404 – 在 Eclipse 中安装 maven 后未找到

java - 如何设置S3文件夹中所有文件的ACL

java - 为什么 XSL 中的内联 java 脚本不包含在服务器端 XSLT 转换中?

java - 在 Java 中使用范围查找枚举

java - 在 Tomcat 服务器中部署 WAR 文件时出错 - org.springframework.web.context.ContextLoaderListener 未加载