我想在tomcat服务器中部署myapp。我知道一种方法是从webapps中删除Root文件夹,并将我的app.war重命名为ROOT.WAR。但我不想这样做。我希望像用户访问我的应用程序一样部署为www.xxx.com,它应该转到我的应用程序,如www.xxx.com/login.html。 请帮忙
答案 0 :(得分:8)
您可以从任何具有任何上下文名称的任何位置部署任何WAR文件(或爆炸的WAR目录),只要它不与任何自动部署的应用程序冲突即可。方法如下:
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"
现在,Tomcat将在上下文路径/path/to/your/WAR.war
上部署/
(因为部署描述符的文件名为ROOT
),您不必修改conf/server.xml
。< / p>
谁在乎修改conf/server.xml
?好吧,该文件只在容器启动期间读取一次,因此如果要进行更改,取消部署,重新部署等,则必须重新启动整个容器以获取这些更改。使用Tomcat的自动部署工具要好得多,正如您所看到的那样,它非常灵活。
所有这些都在Tomcat's documentation on defining contexts中列出,顺便提一下,第一句话清楚地表明在server.xml
中定义上下文是一种不好的做法。
答案 1 :(得分:0)
配置文件是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
答案 2 :(得分:0)
您可以通过多种方式设置根应用程序。 (见https://stackoverflow.com/a/5328636/6371459)
删除ROOT
目录并将您的战争部署为ROOT.war
在webapps
部署战争并在conf/server.xml
中配置上下文根以使用您的war文件(not recommended,因为需要重新启动)
创建特定的上下文文件$CATALINA_BASE/conf/[enginename]/[hostname]/ROOT.xml
并设置docBase=your_war_name
,就像之前的2)
一样(参见@ChristopherShultz回答)
由于您已经放弃了选项1,并且不建议使用选项2,我建议使用上下文文件