当我使用Elastic Beanstalk部署我的app.war
文件时,它部署在ROOT上下文中,因此当我需要http://any-domain/
时,我可以在http://any-domain/app/
处访问它}。
我正在EC2上使用tomcat 8。我知道这个问题可能与ebextensions和/或context.xml config有关。
答案 0 :(得分:3)
此行为是设计使然:“在单个WAR源包中,应用程序始终在根路径上运行。” http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html
如果要覆盖此行为,最简单的方法是创建一个只包含两个war文件的多战包(基本上只是一个包装战争的zip文件)。 zip中的战争名称将确定路径(非常确定这只适用于一个级别),在这种情况下,您将其称为“app.war”,并且您还必须包含一个可以为空的ROOT.war
答案 1 :(得分:2)
最后,我能够解决它。
我将名为server-update.config
的文件添加到.ebextensions
文件根目录下的.war
目录中。该文件的内容如下所示:
container_commands:
replace-config:
command: cp .ebextensions/server.xml /etc/tomcat8/server.xml
有关 ebextensions 的更多信息:https://aws.amazon.com/blogs/aws/customize-elastic-beanstalk-using-configuration-files/
关于server.xml
,我将服务器文件放在/etc/tomcat8
处,并在< Host> 部分添加了以下部分。
<Context path="app" docBase="ROOT"/>