用@Resource注释替换JNDI查找

时间:2013-09-20 06:13:43

标签: java

我使用此代码通过jndi lookup访问数据库连接。

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource datasource = (DataSource)envContext.lookup("TestDB");
Connection connection = datasource.getConnection();

工作正常。后来我用注释替换了它,用以下代码做同样的事情。

@Resource(name="TestDB")
DataSource datasource;

methodName(){
if(datasource!=null){
Connection connection = datasource.getConnection();}
else{
   System.out.println("Datasource is null");
     }
    }

但我得到“DataSource为null”。我也试过@Resource(lookup =“TestDB”),但仍然得到“DataSource为null”。 为什么datasource为null?

1 个答案:

答案 0 :(得分:0)

我的问题如评论中所述:https://stackoverflow.com/a/19530417/1494996

使用InitialContext进行查找工作正常,而使用@Resourse进行查找则没有。一旦我将@Resource声明从常规java类移到我的servlet类,它就开始工作了。容器(在我的例子中是Tomcat 8)只检查着名的注释组件