Jdbc Glassfish-资源注入不起作用

Jdbc Glassfish-资源注入不起作用,jdbc,dependency-injection,glassfish,datasource,Jdbc,Dependency Injection,Glassfish,Datasource,使用NetBeans IDE和Glassfish服务器。由于某些原因,我无法注入数据源。我尝试了一百万种变体 private DataSource iserver; @Resource(name="jdbc/iserver", type=DataSource.class) public void setIServer(DataSource dataSource) { this.iserver = dataSource; } 我已经尝试将@Resource注释直接添加到字段中。连接池和j

使用NetBeans IDE和Glassfish服务器。由于某些原因,我无法注入数据源。我尝试了一百万种变体

private DataSource iserver;
@Resource(name="jdbc/iserver", type=DataSource.class)
public void setIServer(DataSource dataSource) {
    this.iserver = dataSource;
}
我已经尝试将@Resource注释直接添加到字段中。连接池和jdbc资源是在Glassfish上配置的,目前,我已经在同一个类中添加了解决方案代码:

ctx = new InitialContext();
iserver = (DataSource) ctx.lookup("jdbc/iserver");
解决方案代码可以完美地工作。我在Glassfish日志中没有看到任何明显的相关错误。我确实看到了这一点,但不确定是否相关:

*javax.management.ObjectName.constructObjectName.java:405*在javax.management.ObjectName.ObjectName.java:1403在org.glassfish.admingui.common.handlers.ProxyHandlers.getRuntimeProxyAttrsProxyHandlers.java:289在org.glassfish.admingui.common.handlers.ProxyHandlers.getProxyAttrsProxyHandlers.java:273在


有什么建议吗?

确保您处于会话bean中,否则注入将无法工作

下面是我如何注入的一个示例

@Resource(name="jdbc/my_db") private DataSource dataSource;
通过查找选择选项名称->


谢谢你的回复。我对这一点完全陌生——当你说确保你在一个会话bean中时,具体需要在哪里指定,例如,我的类必须扩展SessionBean吗?注入只在你在一个会话bean中工作,而不是在一个pojo普通的OLJava对象中。因此,如果要进行注入,则需要位于实现远程接口的类中,即:@StatelessmappedName=YourSessionBean公共类YourSessionBean实现YourSessionRemote{非常感谢!我感谢您的澄清。文档中的name属性不是有点误导吗?name属性的文档中说:资源的JNDI名称。因此,谢谢,您为我节省了很多时间!这应该是公认的答案,只要bean被管理,bean scope会话对此没有影响。
@Resource(lookup = "java:global/env/jdbc/__default")
DataSource dataSource;