我试图了解与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");
使用DataSource Object
JNDI API
Context 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 Object
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/localDB");
dbCon = ds.getConnection();
...
在此代码中,IntelliJ始终声称,它无法解析方法getConnection()
。
Oracle文档说:
系统管理员部署了基本的DataSource实现后,程序员就可以使用它了。
所以我的第二个问题是:在这种情况下究竟意味着什么?创建DataSource Instance
并使用JDNI
执行注册?或者部署是指Tomcat
context.xml
和web.xml
配置(Tomcat 8 JNDI How-To)?
如果有人对这个问题有一个很好的一步一步的指导,我真的很感激,事实上Oracle文档并不是非常清楚某些点imho。
答案 0 :(得分:2)
对于第二个问题,已部署意味着您的数据源在tomcat的context.xml中声明。 以下是oracle数据库的示例(您必须更改postgres的驱动程序):
{{1}}
之后,您可以编写java部分代码,因为您可以看到此链接http://www.javapractices.com/topic/TopicAction.do?Id=127
有关完整的示例,这里有一个很好的教程http://alvinalexander.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres。
希望这个帮助