Servlet 过滤器 - 上下文初始化
Posted
技术标签:
【中文标题】Servlet 过滤器 - 上下文初始化【英文标题】:Servlet Filters - Context Initialization 【发布时间】:2011-12-07 02:01:37 【问题描述】:当使用“全局”过滤器时,它位于 apache tomcat 网络服务器的根 lib 目录中,适用于所有网络应用程序上下文: 我想知道 Web 应用程序上下文是否是同步初始化的 - 一次一个,或者是否存在两种不同的上下文同时调用 Filter.init() 函数的情况。
我问这个是因为我想在任何应用程序上下文第一次调用 init() 时基于特定的 FilterConfig.initParameter 初始化数据库连接配置对象,我想知道是否应该将以上是否在同步块中...
【问题讨论】:
【参考方案1】:我认为这是 Tomcat 的内部结构,它可以随时更改,所以我会在同步块中进行。这不是什么大问题或性能问题,因为它在每个应用程序上下文初始化时只运行一次。
来自Java Servlet Specification6.2.1 过滤器生命周期:
部署中每个
声明只有一个实例 描述符是按容器的 JVM 实例化的。
您可以使用自定义阀门达到相同的结果:
The Valve Component Valve javadoc【讨论】:
以上是关于Servlet 过滤器 - 上下文初始化的主要内容,如果未能解决你的问题,请参考以下文章