【发布时间】:2011-08-26 05:52:52
【问题描述】:
我正在尝试编写一个需要通过<context-param> 访问web.xml 中定义的上下文参数的CDI 扩展。我认为有两种方法可以做到这一点:
- 不知何故获得
ServletContext并致电getInitParameter() - 手动解析
web.xml
不幸的是,这两种解决方案我都需要ServletContext,但似乎不可能。这里的问题是一些容器在创建ServletContext 之前启动了CDI。即使ServletContext 在 CDI 启动之前可用,似乎也无法从 CDI 扩展中访问它。我尝试了一个ServletContextListener,它将ServletContext 存储在一个静态ThreadLocal 中。这似乎工作正常,但它会造成内存泄漏,因为我无法可靠地清理 ThreadLocal。
在你回答之前还有两个 cmets:
- 使用其他方法来读取配置参数(如使用 JNDI)对我来说是没有选择的,因为我正在尝试编写 CDI 扩展以与第 3 方框架集成。
- 我知道这个问题可能没有解决方案可以在环境/容器之间 100% 移植。但如果我能找到适用于大多数情况的解决方案,我会很高兴。
谢谢! :)
【问题讨论】:
标签: jakarta-ee servlets cdi