1

我正在使用tomcat-10(雅加达)。如果上下文不存在或访问受限,则根据文档 getContext(String)返回。null但在实践中是不正确的。例如,我有两个带有/app1和的 Web 应用程序/app2。运行后我取消部署/app2。我还检查MBeans了 JMX 注册,并且没有注册 servlet 与 context /app2。但是当我调用getContext(/app2)它时返回ROOT servlet。它是一个错误还是正常工作?

更新 为了测试,我只是删除了 tomcat 默认ROOT的 web 应用程序。在我调用getContext方法时删除后,null如果请求的上下文不存在,我会得到。所以我认为在文档或自定义实现方面缺少一些信息Servlet

4

2 回答 2

1

参数 toServletContext#getContext不需要指向上下文的确切 URI。所以:

  • 所有以开头的字符串/app1都会为您提供/app1应用程序的上下文,
  • 所有以开头的字符串/app2都会为您提供/app2应用程序的上下文,
  • 停止后/app2,所有请求/app2都将被路由到ROOT上下文。因此getContext("/app2")将返回ROOT上下文。
于 2022-01-11T18:53:40.410 回答
0

getContext 方法是为不同的Web 应用程序获取对servlet 上下文的引用,如果您当前的应用程序确实有权访问由tomcat 的默认值(即cross-context = true)指定的其他上下文,则该方法不会为空。

此外,您当前的 Web 应用程序已经具有对 servlet 上下文的引用,可能在您的应用程序变量中

于 2022-01-11T10:21:44.890 回答