尝试将 JNDI 用于 JDBC 时出现空指针异常

Null pointer exception when attempting to use JNDI for JDBC

在 Glassfish 管理中,我设置了一个 JDBC 连接池,我可以 ping 通。同样在 Glassfish 管理中,我设置了一个名为 jdbc/myDb

的 JNDI JDBC 资源

但是我无法从 Java 连接到它。我已经尝试了两种注入方式:

@Resource (mappedName="jdbc/myDB")
private DataSource datasource;

我也尝试过 Context 样式:

Context ctx = new InitialContext();
DataSource datasource = (DataSource)ctx.lookup("jdbc/myDB")

我得到的只是java.lang.NullPointerException。

我也尝试过各种命名方式,比如java:jdbc/myDB or java:comp/env/jdbc/myDb

这是使用最新的 Glassfish (4.1)、针对 Postgres 9.4 的最新 Postgres 驱动程序 (9.3-1102 JDBC 41),以及最新的 Java (1.8.0_31-b13 ).

进入菜单 JDBC -> JDBC 资源 -> jdbc/__default

在下拉菜单中选择您的数据库名称 "Pool Name: " 并使用

@Resource (mappedName="jdbc/__default")

注意两个“_”!

至少这对我有用。

p.s.: 能具体说明NPE抛出的地方吗?