Servlet过滤器-上下文初始化



当使用"global"过滤器时,它位于apache tomcat web服务器的根lib目录中,并适用于所有web应用程序上下文:我想知道web应用程序上下文是否同步初始化-一次一个,或者可以有一个情况下,Filter.init()函数在同一时间被两个不同的上下文调用。

我问这个,因为我想根据特定的FilterConfig初始化数据库连接配置对象。initParameter第一次init()被任何应用程序上下文调用,我想知道我是否应该把上面的同步块或不…

我认为这是Tomcat的内部,它可以随时改变,所以我在一个同步块中做。这不是一个大问题或性能问题,因为它只运行一次应用程序上下文初始化。

来自Java Servlet规范6.2.1过滤器生命周期:

每个部署中的声明描述符是在容器的每个JVM上实例化的。

您可以使用自定义Valve达到相同的结果:

  • 阀门组件
  • 阀javadoc

最新更新