Я пытаюсь написать расширение CDI, которому необходимо получить доступ к параметрам контекста, определенным в web.xml, через <context-param>
. Я думаю, что есть два способа сделать это:
- Как-то получить
ServletContext
и позвонитьgetInitParameter()
- Вручную проанализируйте
web.xml
К сожалению, мне нужно ServletContext
для обоих решений, и получить его не представляется возможным. Проблема здесь в том, что некоторые контейнеры запускают CDI до создания ServletContext
. И даже если ServletContext
будет доступен до запуска CDI, кажется, нет никакого способа получить к нему доступ из расширения CDI. Я экспериментировал с ServletContextListener
, который хранит ServletContext
в статическом ThreadLocal
. Кажется, это работает нормально, но это приведет к утечке памяти, так как я не могу надежно очистить ThreadLocal
.
Еще два комментария, прежде чем вы ответите:
- Использование какого-либо другого подхода для чтения параметров конфигурации (например, использование JNDI) для меня не вариант, поскольку я пытаюсь написать расширение CDI для интеграции со сторонней структурой.
- Я осознаю тот факт, что, вероятно, не будет решения этой проблемы, которое на 100% переносимо между средами/контейнерами. Но я был бы счастлив, если бы нашел решение, которое работает в большинстве случаев.
Спасибо! :)