EDIT: This is a duplicate of apache-tomcat-9.0.0.M10: Change Context-Path in META-INF/context.xml not working. In the other question, it is stated that Tomcat ignores context.xml
despite the docs and it also seems to be the case here.
I have a WAR copied to Tomcat 9 webapps
. This WAR's /META-INF/context.xml
is ignored, the resulting path is simply the WAR's name. I do not want it ignored. There is a lot of questions about that file being ignored, with answers "remove the context from Tomcat's conf/server.xml
". But there is no such thing in conf/server.xml
:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
I have found the following docs:
Then, there is conf/context.xml
:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
but I guess that it is obligatory.
This is the ignored /META-INF/context.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sc">
<Manager pathname="" />
</Context>
I know that it is read by Tomcat, because introducing any syntax error into it makes Tomcat put the relevant error messages into its logs. Yet it is ignored anyways. I have found the following docs:
This "/META-INF/context.xml" file will be automatically copied to "$CATALINA_HOME/conf/[enginename]/[hostname]/", after being renamed to mirror the application's context path.
Once the "context.xml" file has been renamed and copied to the "[hostname]" directory, it will not be replaced, even if the WAR is updated with a new "/META-INF/context.xml" file.
which is confusing: what is the idea behind reading the WAR's context.xml
just one time and then ignoring it? By the way, the directory conf/Catalina/localhost/
is empty anyways.
I tried to increase the log level to FINE, but I cannot make the logger report, how the context files are handled.
My question: if I have no context defined in conf/server.xml
, how to make Tomcat not ignore
/META-INF/context.xml
in my WAR, including the cases where the context's contents change?