JNDI @Resource 注解
JNDI @Resource annotation
在 servlet 和过滤器中 classes 我可以通过注解初始化 DataSource 变量
@Resource(name = "jdbc/testDB")
protected DataSource ds;
但是它如何通过注释在基本 class 中初始化?
通常抛出 NullPointerException
public class AddAuto {
@Resource(name = "jdbc/testDB")
private DataSource ds;
}
你的容器是什么?
如果是tomcat,资源名称应该是这样的
@Resource(name = "java:/comp/env/jdbc/testDB")
protected DataSource ds;
我不知道其他容器,但 JBoss 与 Tomcat 相同,GlassFish 作为您的值。
我还建议旧的查找,这对调试有很大帮助
void init(){
DataSource ds=(DataSource)InitialContext.doLookup("java:/comp/env/jdbc/testDB");
}
容器仅检查 servlet、过滤器等知名组件内部的注释。您应该将 class 转换为某个组件:
- Web 组件(servlet、过滤器、Web 容器侦听器)
- EJB(tomcat 不支持)
- CDI 豆
或者您可以使用非 Java EE 解决方案,例如 spring
在 servlet 和过滤器中 classes 我可以通过注解初始化 DataSource 变量
@Resource(name = "jdbc/testDB")
protected DataSource ds;
但是它如何通过注释在基本 class 中初始化? 通常抛出 NullPointerException
public class AddAuto {
@Resource(name = "jdbc/testDB")
private DataSource ds;
}
你的容器是什么?
如果是tomcat,资源名称应该是这样的
@Resource(name = "java:/comp/env/jdbc/testDB")
protected DataSource ds;
我不知道其他容器,但 JBoss 与 Tomcat 相同,GlassFish 作为您的值。
我还建议旧的查找,这对调试有很大帮助
void init(){
DataSource ds=(DataSource)InitialContext.doLookup("java:/comp/env/jdbc/testDB");
}
容器仅检查 servlet、过滤器等知名组件内部的注释。您应该将 class 转换为某个组件:
- Web 组件(servlet、过滤器、Web 容器侦听器)
- EJB(tomcat 不支持)
- CDI 豆
或者您可以使用非 Java EE 解决方案,例如 spring