使用Elastic Beanstalk时保留WAR名称

时间:2015-12-09 14:21:14

标签: java elastic-beanstalk tomcat8

当我使用Elastic Beanstalk部署我的app.war文件时,它部署在ROOT上下文中,因此当我需要http://any-domain/时,我可以在http://any-domain/app/处访问它}。

我正在EC2上使用tomcat 8。我知道这个问题可能与ebextensions和/或context.xml config有关。

2 个答案:

答案 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"/>

感谢您的回答:https://stackoverflow.com/a/18226607/3576460