我们正在从遗留系统部署webapp(.war文件),我们可以完全控制我们的Tomcat实例到Amazon的Elastic Beanstalk实例.
在我们自己的系统上,我们访问Web应用程序作为路径(例如,http://server-name/my-app如果我们部署my-app.war),但Elastic Beanstalk将我们的war文件重命名为ROOT.war,从而使Web应用程序可用http://server-name,这打破了我们现有的应用.
根据AWS文档,我们在其下添加了一个配置文件WEB-INF/.ebextensions,将以下自定义context.xml文件复制到/etc/tomcat7/Catalina/localhost/ROOT.xml:
<?xml version='1.0' encoding='utf-8'?>
<Context displayName="localhost" docBase="" path="/my-app">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Run Code Online (Sandbox Code Playgroud)
我们尝试过这个文件的不同版本,例如省略docBase,指定docBase="ROOT",使用aliases参数等,提供ROOT目录等的完整路径,但没有一个使我们的WAR文件可以在/my-app路径下访问.
最后,我们还尝试将此<Context />-definition置于该<Host />部分下server.xml,但无济于事.有什么建议?
更新:在-definition server.xml下添加以下内容时<Host/>,我可以my-app在正确的路径下访问,但似乎EB上的Tomcat现在正在部署我的应用程序两次:
<Context path="/my-app" docBase="ROOT/"></Context>
Run Code Online (Sandbox Code Playgroud) java tomcat amazon-ec2 amazon-web-services amazon-elastic-beanstalk