我试图理解如何用DataSource Object
和JNDI API
建立数据库连接。
我正在使用Intellij UE,并运行本地Tomcat-8
和Postgres-Server
。
我按照Oracle Java文档中提到的进行操作:
1.创建DataSource Class
示例并设置其属性
org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource();
dataSource.setServerName("localhost");
dataSource.setDatabaseName("db01");
dataSource.setUser("jwi");
dataSource.setPassword("password");
字符串
1.向使用JNDI API
的命名服务注册DataSource Object
Context ctx = null;
try {
ctx = new InitialContext();
ctx.bind("jdbc/localDB", dataSource);
} catch (NamingException e) {
e.printStackTrace();
}
型
Oracle文档说:
设置了属性后,系统管理员可以使用JNDI(Java命名和目录接口)命名服务注册BasicDataSource对象。
所以我的第一个问题是:注册DataSource
意味着什么?我的代码是否已经obove了DataSource Object
到JNDI
的注册?
1.使用已部署的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)?
我真的很感激,如果有人有一个很好的一步一步的指示,这个问题,事实上,甲骨文文档是不是真的很清楚的一些点imho。
1条答案
按热度按时间dsf9zpds1#
对于第二个问题,deployed意味着您的数据源在tomcat的context.xml中声明。下面是一个oracle数据库的例子(你必须改变postgres的驱动程序):
字符串
之后,您可以编写java部分,为此,您可以查看此链接http://www.javapractices.com/topic/TopicAction.do?Id=127
对于一个完整的例子,这里有一个很好的教程http://alvinalexander.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres。
希望这对你有帮助