如何为已部署的应用程序覆盖Java容器URL映射

时间:2012-05-19 16:48:09

标签: java java-ee tomcat glassfish admin

如果我有一个名为my-web-app.war的WAR并将其部署到Tomcat的webapps/目录,假设它正确启动,我可以通过将浏览器指向:

来访问它
http://localhost/my-web-app

同样,如果我有一个名为my-server-app.ear的EAR并将其部署到GlassFish的domain/autodeploy/目录,然后还假设它正确启动,我可以通过将浏览器指向以下来访问它:

http://localhost/my-server-app

但是,如果我想保持我的WAR / EAR具有相同名称,但将其部署到与这些默认值不同的URL,该怎么办?例如:

  • my-web-app.war部署为http://localhost/webapp
  • my-server-app.war部署为http://localhost/srvapp
  • my-server-app.war部署为http://localhost

在像Apache这样的其他服务器中,我知道可以设置“虚拟目录”等,以便http://example.com/some/long/path/to/file.html在浏览器中显示为http://example.com/file,并且想知道Tomcat / GlassFish是否允许这样做(如果是的话,如何)?

我问,因为我打算将所有WAR / EAR的版本包含在他们的名字中,所以我可以在文件系统上查看它们,并立即知道它们是什么版本,例如:

  • my-web-app-3.17.2.war

让我的用户转到http://localhost/my-web-app-3.17.2似乎疯了。

2 个答案:

答案 0 :(得分:3)

使用Tomcat有两种方法可以做到这一点,但最好的方法是利用并行部署版本标签。

您可以将WAR命名为:

webapp##my-web-app-3.17.2.war

并将部署到

/webapp

##之后的任何内容都被视为并行部署的版本标签。有关详细信息,请参阅docs

答案 1 :(得分:1)

如果您有EAR,可以在文件application.xml中设置上下文根

对于每场战争,你可以设置一个上下文根