繁体   English   中英

JNDI @资源注释

[英]JNDI @Resource annotation

在Servlet和过滤器类中,我可以通过注释初始化DataSource变量

 @Resource(name = "jdbc/testDB")
    protected DataSource ds;

但是它如何通过注解在基本类中初始化? 通常抛出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,过滤器等知名组件内部检查批注。 您应该将类​​转换为以下组件:

  • Web组件(Servlet,过滤器,Web容器侦听器)
  • EJB(tomcat不支持)
  • CDI豆

或者您可以使用非Java EE解决方案,例如spring

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM