Servlet 过滤器 - 上下文初始化
当使用“全局”过滤器时,该过滤器位于 apache tomcat Web 服务器的根 lib 目录中并适用于所有 Web 应用程序上下文: 我想知道 Web 应用程序上下文是否同步初始化 - 一次一个,或者是否存在 Filter.init() 函数被两个不同上下文同时调用的情况。
我问这个是因为我想在任何应用程序上下文第一次调用 init() 时根据特定的 FilterConfig.initParameter 初始化数据库连接配置对象,并且我想知道是否应该将上述内容放在同步块与否...
When using a "global" filter, one which is located in the root lib directory of an apache tomcat webserver and applies to all web application contexts:
I was wondering if the web application contexts are initialized synchronously - one at a time, or can there be a case where the Filter.init() function is called by two different contexts in the same time.
I'm asking this since I want to initialize a database connection configuration object based on a specific FilterConfig.initParameter the first time init() is called by any of the application contexts, and I'm wondering if I should put the above in a synchronized block or not...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为这是 Tomcat 的内部结构,它可以随时更改,因此我会在同步块中执行此操作。这不是一个大问题或性能问题,因为它在每个应用程序上下文初始化时只运行一次。
来自 Java Servlet 规范 6.2 .1 过滤器生命周期:
您可以使用自定义 Valve 达到相同的结果:
I think it's the internals of Tomcat, it could change any time so I'd do it in a synchronized block. It's not a big deal or performance issue because it runs only once per application context initialization.
From Java Servlet Specification 6.2.1 Filter Lifecycle:
You could reach the same result with a custom Valve: