Спецификация сервлета: <context-param> vs <env-entry> в web.xml?
Почему спецификация сервлета определяет два разных способа (параметры контекста и записи среды) для предоставления веб-приложению параметров конфигурации?
Каковы соответствующие преимущества этих подходов (когда следует отдать предпочтение)?
1 ответ
Записи среды доступны через JNDI, что может быть полезно, когда у вас нет ServletContext
прямо под руками, например в EJB. Тот в web.xml
на самом деле является последним в цепочке приоритетов в отношении переопределения окружающей среды. Они обычно определяются в собственной конфигурации сервера. Так что если кто-то намеревается переопределить указанную сервером запись среды из веб-приложения, то это можно сделать с помощью web.xml
,
Параметры контекста действительно специфичны для самого веб-приложения. Они доступны только тогда, когда у вас есть ServletContext
непосредственно под рукой, обычно только внутри фильтров, сервлетов (и, по сути, также JSP через ${initParam.someName}
в EL) и слушателей. Предполагается, что они используются для предоставления параметров конфигурации для фильтров, сервлетов и / или прослушивателей, работающих в веб-приложении. Не имеет смысла предоставлять их JNDI, который является слишком сложным процессом для простой цели.