【发布时间】:2015-12-11 11:02:36
【问题描述】:
我正在尝试了解如何使用 DataSource Object 和 JNDI API 建立数据库连接。
我正在使用 Intellij UE,并且正在运行本地 Tomcat-8- 和 Postgres-Server。
我按照 Oracle Java 文档中的说明进行操作:
-
创建
DataSource Class的实例并设置其属性org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource(); dataSource.setServerName("localhost"); dataSource.setDatabaseName("db01"); dataSource.setUser("jwi"); dataSource.setPassword("password"); -
向使用
JNDI API的命名服务注册DataSource ObjectContext ctx = null; try { ctx = new InitialContext(); ctx.bind("jdbc/localDB", dataSource); } catch (NamingException e) { e.printStackTrace(); }
Oracle 文档说:
通过设置属性,系统管理员可以使用 JNDI(Java 命名和目录接口)命名服务注册 BasicDataSource 对象。
所以我的第一个问题是:注册DataSource 是什么意思?我的代码是否已经注册了DataSource Object 到JNDI?
-
使用已部署的
DataSource Objecttry { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("jdbc/localDB"); dbCon = ds.getConnection(); ...
在这段代码中,IntelliJ 总是声称它无法解析方法getConnection()。
Oracle 文档说:
在系统管理员部署了基本的 DataSource 实现之后,就可以供程序员使用了。
所以我的第二个问题是:在这种情况下部署到底意味着什么?创建DataSource Instance 并使用JDNI 执行注册?或者部署意味着Tomcatcontext.xml和web.xml配置(Tomcat 8 JNDI How-To)?
如果有人对此问题有良好的分步说明,我将不胜感激,事实上,Oracle 文档对某些要点并不十分清楚。
【问题讨论】:
标签: java postgresql tomcat datasource jndi