使用@Resource在Java EE 6和Glassfish 3.1上注入资源时遇到问题

时间:2011-06-21 08:44:19

标签: dependency-injection glassfish java-ee-6

我在使用Java EE 6和Glassfish 3.1(嵌入式)时使用@Resource注释时遇到了麻烦。我想查找一个JNDI数据源,所以我试图让它使用Glassfish中的默认数据源。在我的代码中,我有:

@Resource(lookup = "java:global/env/jdbc/__default")
DataSource dataSource;

编译好。我正在使用Maven +建议here

但是,当我部署.war时,我总是会收到以下错误:

WARNING: Incorrect @Resource annotation class definition - missing lookup attribute
  symbol: FIELD
  location: javax.sql.DataSource ResourceLookup.dataSource

这是一个很简单的例子,如果它是一个bug,我会非常惊讶。我一定做错了什么。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

作为测试,您可以尝试使用“jdbc / __ default”作为查找字符串吗?对于我的数据源,我使用我指定的jndi名称查找它们,总是使用模式“jdbc / MyDataSourceName”。

@Resource(lookup =“jdbc / MyDataSourceName”)效果很好。从未尝试查找默认的ds,特别是不通过java:global namespace。