在Glassfish管理员中,我设置了一个我可以ping通的JDBC连接池。同样在Glassfish管理员中,我已经设置了一个名为jdbc / myDb的JNDI JDBC资源。
但是我无法从Java连接到它。我尝试了两种注入方式:
@Resource (mappedName="jdbc/myDB")
private DataSource datasource;
我也尝试了上下文样式:
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.3-1102 JDBC 41)(针对Postgres 9.4)和最新的Java(1.8.0_31-b13)。
最佳答案
转到菜单JDBC-> JDBC资源-> jdbc / __ default
在下拉菜单“池名称:”中选择您的DBName并使用
@Resource (mappedName="jdbc/__default")
注意两个“ _”!
至少这对我有用。
附注:您可以指定将NPE扔到哪里吗?
关于java - 尝试将JNDI用于JDBC时出现空指针异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28261580/