Сервлет @ Ресурс чтения getInitParameters - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь прочитать контекстный параметр из моего файла web.xml в @Resource как:

@Resource(name=getServletContext().getInitParameter("DB_Name"))
private DataSource DB;

web.xml:

<context-param>
    <param-name>DB_Name</param-name>
    <param-value>samplename</param-value>
  </context-param>

Но получаю ошибку значения для ресурса должны быть константами .Есть ли обходной путь для чтения имени параметра в @Resource без непосредственного его жесткого кодирования?

Я пришел к выводу, что это невозможно, но не уверен, почему: это не очень хорошая практика - жестко кодировать имя базы данных вкаждый сервелт.Я вынул @Resource и вставил его в метод init (), который работает.

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DB = (DataSource) envCtx.lookup(getServletContext().getInitParameter("DB_Name"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...