我正在使用tomcat-10(雅加达)。根据给医生 getContext(String),如果上下文不存在或访问受限,则返回null。但在实践中是不正确的。例如,我有两个带有/app1和/app2的web应用程序。运行之后,我取消部署/app2。我还使用JMX检查了注册的MBeans,并且没有使用上下文/app2注册的servlet。但是当我调用getContext(/app2)时,它会返回ROOT servlet。它是一个bug还是正常工作?
用于测试的更新我只是删除tomcat默认的ROOT web应用程序。在调用getContext方法时删除后,如果请求的上下文不存在,则得到null。因此,我认为Servlet的文档或自定义实现缺少一些信息。
发布于 2022-01-11 18:53:40
ServletContext#getContext的参数不需要指向上下文的确切URI。因此:
/app1启动的所有字符串都将为/app1应用程序提供上下文,/app2启动的所有字符串都将为/app2应用程序提供上下文,/app2之后,所有对/app2的请求都将被路由到ROOT上下文。因此,getContext("/app2")将返回ROOT上下文。发布于 2022-01-11 10:21:44
getContext方法是获取针对不同web应用程序的servlet上下文的引用,如果当前应用程序确实具有访问tomcat缺省值所指定的其他上下文的权限,则不会为null。
另外,当前的web应用程序已经有了对servlet上下文的引用,可能在应用程序变量中。
https://stackoverflow.com/questions/70664911
复制相似问题