【发布时间】:2014-07-24 07:59:31
【问题描述】:
我们正在将 web 应用程序(.war 文件)从我们可以完全控制 Tomcat 实例的旧系统部署到 Amazon 的 Elastic Beanstalk 实例。
在我们自己的系统上,我们以路径的形式访问 Web 应用程序(例如,如果我们部署 my-app.war,则为 http://server-name/my-app),但 Elastic Beanstalk 将我们的 war-file 重命名为 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>
我们已经尝试过这个文件的不同版本,例如省略 docBase,指定docBase="ROOT",使用aliases 参数等,提供ROOT 目录的完整路径等,但没有一个使我们的WAR 文件可以在/my-app 路径下访问。
最后,我们还尝试将这个<Context />-definition 放在server.xml 的<Host /> 部分下,但无济于事。有什么建议吗?
更新:将以下内容添加到<Host/>-定义下的server.xml 时,我可以在正确的路径下访问my-app,但似乎EB 上的Tomcat 是现在部署我的应用程序两次:
<Context path="/my-app" docBase="ROOT/"></Context>
【问题讨论】:
-
我已经被这个问题困扰了 3 天了。我不知道该怎么办。在本地,我可以使用上下文根访问我的应用程序和 REST 服务,但是当部署在 aws 实例上时,它不可用。我在哪里可以找到 server.xml?指向任何文档的指针都会有所帮助。我也可以使用 putty 连接到我的实例,但我找不到路径 /etc/tomcat7/Catalina/localhost/ROOT.xml
-
@breght 那么,结果如何?我面临着完全相同的问题,如果我必须创建
context.xml或server.xml,我不知道它必须有什么内容:·) 提前致谢!
标签: java tomcat amazon-web-services amazon-ec2 amazon-elastic-beanstalk