首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Servlet.getContext(字符串)在取消部署后不返回null

为什么Servlet.getContext(字符串)在取消部署后不返回null
EN

Stack Overflow用户
提问于 2022-01-11 10:07:26
回答 2查看 78关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-11 18:53:40

ServletContext#getContext的参数不需要指向上下文的确切URI。因此:

  • /app1启动的所有字符串都将为/app1应用程序提供上下文,
  • /app2启动的所有字符串都将为/app2应用程序提供上下文,
  • 停止/app2之后,所有对/app2的请求都将被路由到ROOT上下文。因此,getContext("/app2")将返回ROOT上下文。
票数 1
EN

Stack Overflow用户

发布于 2022-01-11 10:21:44

getContext方法是获取针对不同web应用程序的servlet上下文的引用,如果当前应用程序确实具有访问tomcat缺省值所指定的其他上下文的权限,则不会为null。

另外,当前的web应用程序已经有了对servlet上下文的引用,可能在应用程序变量中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70664911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档