在 tomcat 中获取另一个 webapp 的上下文
Getting context of another webapp in tomcat
我在 Tomcat 8.0.20 上有以下配置 运行:
C:\tomcat
conf
server.xml
context.xml
webapps
app
app2
......
C:\external
app3
web
app4
web
app5
web
在 context.xml 我有 <Context crossContext="true"> .... </Context>
并且在 server.xml 中:
..........
<Host name="host.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context
cachingAllowed="false"
docBase="C:\external\app3\web"
path=""
crossContext="true"
reloadable="true" />
<Context
cachingAllowed="false"
crossContext="true"
docBase="C:\external\app4\web"
path="/app4"
reloadable="true" />
<Context
cachingAllowed="false"
crossContext="true"
docBase="C:\external\app5\web"
path="/app5"
reloadable="true" />
</Host>
从 /app4
获取 /app
、/app2
或 /app5
的上下文按预期工作:
request.getServletContext().getContext("/app")
不为空。
但是,请求 /app3
的上下文(上下文路径 /
)。
知道为什么 getContext("/")
为空吗?
事实证明,这是 tomcat 版本 8.0.15
之后的回归
提交错误报告 here
已恢复 tomcat 到 8.0.15,现在可以使用了....
我在 Tomcat 8.0.20 上有以下配置 运行:
C:\tomcat
conf
server.xml
context.xml
webapps
app
app2
......
C:\external
app3
web
app4
web
app5
web
在 context.xml 我有 <Context crossContext="true"> .... </Context>
并且在 server.xml 中:
..........
<Host name="host.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context
cachingAllowed="false"
docBase="C:\external\app3\web"
path=""
crossContext="true"
reloadable="true" />
<Context
cachingAllowed="false"
crossContext="true"
docBase="C:\external\app4\web"
path="/app4"
reloadable="true" />
<Context
cachingAllowed="false"
crossContext="true"
docBase="C:\external\app5\web"
path="/app5"
reloadable="true" />
</Host>
从 /app4
获取 /app
、/app2
或 /app5
的上下文按预期工作:
request.getServletContext().getContext("/app")
不为空。
但是,请求 /app3
的上下文(上下文路径 /
)。
知道为什么 getContext("/")
为空吗?
事实证明,这是 tomcat 版本 8.0.15
之后的回归提交错误报告 here
已恢复 tomcat 到 8.0.15,现在可以使用了....