我正尝试将我的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"));