2

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

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");
     }
    }

但我得到“数据源为空”。我也尝试使用 @Resource(lookup="TestDB") 但仍然得到“DataSource is null”。为什么数据源为空?

4

1 回答 1

0

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

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

于 2018-03-27T14:15:52.733 回答