How can I specify “Context path” on Tomcat 8 inside META-INF/context.xml in java war file?

牧云@^-^@ 提交于 2019-11-30 15:28:36

问题


How can I deploy mywebapp-1.0.0.war to $TOMCAT_HOME/webapps directory with context path /mywebapp using context.xml inside the war file on Tomcat 8?

I'm getting back to work with Tomcat after long time since version 5. I'm used to create META-INF/context.xml inside my war file:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/mywebapp">
  ...
</Context>

Maven creates a war file with this name: mywebapp-1.0.0.war

But when I deploy the war file to $TOMCAT_HOME/webapps directory the context path will be http://localhost:8080/mywebapp-1.0.0 instead of http://localhost:8080/mywebapp/.

Also I see that $TOMCAT_HOME/conf/Catalina/localhost is empty, instead of having the xml file copied from the war file deployed.

I also added to $TOMCAT_HOME/conf/server.xml the deployXML="true"

 <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true" 
        deployXML="true">

回答1:


It is not possible to put a war inside the webapp directory and set the path attribute in META-INF/context.xml file at the same time. Tomcat 8 documentation, clearly says about this attribute:

This attribute must only be used when statically defining a Context in server.xml. In all other circumstances, the path will be inferred from the filenames used for either the .xml context file or the docBase.




回答2:


Can't you just rename your war file to mywebapp (via Maven or else) so that Tomcat will deploy it under /mywebapp ?




回答3:


Thanks for your research j2gl! I've found out that good way how to achieve both .war file with full name with version and deployed short path is to use Tomcat manager API. For example through Tomcat7-maven-plugin.



来源:https://stackoverflow.com/questions/30223269/how-can-i-specify-context-path-on-tomcat-8-inside-meta-inf-context-xml-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!