当使用"global"过滤器时,它位于apache tomcat web服务器的根lib目录中,并适用于所有web应用程序上下文:我想知道web应用程序上下文是否同步初始化-一次一个,或者可以有一个情况下,Filter.init()函数在同一时间被两个不同的上下文调用。
我问这个,因为我想根据特定的FilterConfig初始化数据库连接配置对象。initParameter第一次init()被任何应用程序上下文调用,我想知道我是否应该把上面的同步块或不…
我认为这是Tomcat的内部,它可以随时改变,所以我在一个同步块中做。这不是一个大问题或性能问题,因为它只运行一次应用程序上下文初始化。
来自Java Servlet规范6.2.1过滤器生命周期:
每个
部署中的声明描述符是在容器的每个JVM上实例化的。
您可以使用自定义Valve达到相同的结果:
- 阀门组件
- 阀javadoc