Servlet @Resource读取getInitParameters

时间:2019-04-25 11:09:43

标签: java servlets

我正尝试将我的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而不直接对其进行硬编码?

我已经得出结论,这是不可能的,但不能确定为什么:在每个Servlt中对数据库名称进行硬编码不是一种好习惯。我拿出@Resource并将其插入init()方法中,该方法可以正常工作。

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DB = (DataSource) envCtx.lookup(getServletContext().getInitParameter("DB_Name"));

0 个答案:

没有答案