将war应用程序名称与war文件名分隔开

pde*_*eva 27 java tomcat war java-ee

目前,如果我在名为say的tomcat上部署war文件myapp.war,我可以通过http:// localhost/myapp/MyServlet访问其URL .

但是我想要的是在war文件名中部署一个版本号的war,并且仍然具有相同的url.例如,我想部署myapp-1.1.0.war并仍然将URL设置为http:// localhost/myapp/MyServlet

当然我需要不断更新战争,版本号会不断变化,所以我不能在任何地方硬编码war文件名.web.xml我可以使用任何设置来保持应用程序的相同网址,无论战争文件名是什么?

mat*_*t b 14

解决方案是停止使用Tomcat的自动部署功能,该功能采用将"上下文名称"(/myappURL 的一部分)设置为".war"之前的WAR文件名部分的快捷方式.

相反,请自行将WAR内容提取到文件系统,并设置一个XML文件,在TOMCAT_HOME/conf/[enginename]/[hostname]/[contextname].xml该文件中指向所需的上下文路径(例如/myapp)到磁盘上应用程序的位置(例如/opt/webapps/myapp-1.1.0/).

Tomcat的参考文档提供的Tomcat如何自动部署应用的一个很好的解释,以及如何为上下文路径的应用程序文件位置映射配置自定义逻辑(也有其他方法少数设置这不是一个我建议其他以上).

  • 这是否意味着每次我使用更新的文件名部署新版本的战争时,我还必须更新.xml文件? (3认同)

Kar*_*ran 8

您可以使用YOUR_WAR/META-INF/context.xml.这是一个示例:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/MyServlet"/>
Run Code Online (Sandbox Code Playgroud)

  • 我误读了吗?"path"部分说:"除非在server.xml中静态定义Context,否则不得设置此字段的值" (2认同)