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

时间:2015-02-01 10:07:37

标签: java jdbc glassfish jndi glassfish-4

在Glassfish管理员中,我设置了一个可以ping通的JDBC连接池。同样在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或java:comp / env / jdbc / myDb

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

1 个答案:

答案 0 :(得分:2)

进入菜单JDBC - > JDBC资源 - > JDBC / __默认

在DropDown菜单“池名称:”中选择您的DBName并使用

@Resource (mappedName="jdbc/__default")

记住两个“_”!

至少这对我有用。

p.s。:你能说明投掷NPE的位置吗?