Servlet过滤器 - 上下文初始化

时间:2011-10-13 15:34:32

标签: java tomcat synchronization servlet-filters

使用“全局”过滤器时,该过滤器位于apache tomcat webserver的根lib目录中,并适用于所有Web应用程序上下文: 我想知道Web应用程序上下文是否同步初始化 - 一次一个,或者可能存在同时由两个不同的上下文调用Filter.init()函数的情况。

我问这个,因为我想在任何应用程序上下文第一次调用init()时基于特定的FilterConfig.initParameter初始化数据库连接配置对象,我想知道我是否应该放入以上是否在同步块中......

1 个答案:

答案 0 :(得分:1)

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

来自Java Servlet Specification 6.2.1过滤器生命周期

  

每个< filter>只有一个实例部署中的声明   描述符是根据容器的JVM实例化的。

您可以使用自定义Valve获得相同的结果: