我希望能在Tomcat服务器上部署我的应用程序。我知道一种方法是从webapps中删除Root文件夹,将我的app.war重命名为ROOT.WAR。但我不想这样做。我希望像用户访问www.xxx.com一样部署我的应用程序,就像www.xxx.com/login.html。
webapps/
中删除任何冲突的应用程序(在这种情况下,实际上只有ROOT
)。webapps/
之外的其他位置。META-INF/context.xml
文件复制到Tomcat的conf/[engine]/[host]/[contextpath].xml
中,例如:conf/Catalina/localhost/ROOT.xml
conf/[engine]/[host]/[contextpath].xml
并向<Context>
元素添加此属性:
docBase="/path/to/your/WAR.war"
/
上部署/path/to/your/WAR.war
(因为部署描述符的文件名为ROOT
),而且您不需要修改conf/server.xml
。conf/server.xml
?好吧,那个文件只在容器启动期间读取一次,因此如果要进行更改、撤消部署、重新部署等操作,则必须重新启动整个容器才能捕获这些更改。最好使用Tomcat的自动部署功能,正如您所看到的那样是非常灵活的。server.xml
中定义上下文是不良实践。localhost:port/myapp
而不是localhost:port/
。这是在Tomcat 9.0.20上。我正在从webapps中删除ROOT,将myapp.war
复制到tomcat/app(这是一个自定义位置),将myapp.xml
复制到/usr/local/tomcat/conf/Catalina/localhost/
,其中包含<Context docBase="/usr/local/tomcat/app/myapp.war"></Context>
。你能帮我找出我做错了什么吗? - Sajib AcharyaROOT.xml
而不是myapp.xml
。Tomcat从XML文件的名称中派生上下文路径,并且使用名称ROOT.xml
作为特殊处理,将零长度字符串用作上下文路径。 - Christopher Schultzwebapps/
之外的其他地方。 - Christopher Schultz删除ROOT
目录并将您的war文件部署为ROOT.war
在webapps
中部署您的war文件,并在conf/server.xml
中配置上下文根以使用您的war文件(不建议使用,因为需要重新启动)
创建一个特定的上下文文件$CATALINA_BASE/conf/[enginename]/[hostname]/ROOT.xml
,并像前面的2)
一样设置docBase=your_war_name
(请参见@ChristopherShultz的答案)
由于您已放弃选项1,而选项2不建议使用,我建议使用上下文文件。
server.xml
中配置Context
是一个不好的想法。 - Christopher Schultz配置文件是server.xml
您可以按照此示例进行操作:https://examples.javacodegeeks.com/enterprise-java/tomcat/tomcat-server-xml-configuration-example/
参考Tomcat文档:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html