我正在努力理解如何与DataSource Object和JNDI API建立数据库连接。
我正在与Intellij合作,并有一个本地Tomcat-8-和Postgres-Server运行。
我继续执行Oracle Java文档中提到的内容:
DataSource Class实例并设置其属性
org.postgresql.ds.PGSimpleDataSource dataSource =新的org.postgresql.ds.PGSimpleDataSource();dataSource.setServerName("localhost");dataSource.setDatabaseName("db01");dataSource.setUser("jwi");dataSource.setPassword(“密码”);DataSource Object的命名服务中注册JNDI API
上下文ctx = null;尝试{ ctx =新InitialContext();ctx.bind("jdbc/localDB",dataSource);}NamingException (NamingException e) { e.printStackTrace();}Oracle文档说:
设置属性后,系统管理员可以使用JNDI ()命名服务注册BasicDataSource对象。
所以我的第一个问题是:注册DataSource意味着什么?我的代码是否已经注册了DataSource Object到JNDI?
DataSource Object
尝试{ Context ctx =新InitialContext();DataSource ds = (DataSource) ctx.lookup("jdbc/localDB");dbCon = ds.getConnection();.在这段代码中,裁剪IntelliJ总是声称它不能解析getConnection()方法。
Oracle文档说:
在系统管理员部署了基本的DataSource实现之后,它就可以供程序员使用了。
因此,我的第二个问题是:在这种情况下部署到底意味着什么?创建一个DataSource Instance并使用JDNI执行注册?或者部署意味着Tomcat context.xml和web.xml配置(猫8 JNDI如何-到)?
如果有人对这个问题有一个好的一步一步的指导的话,我会非常感激的,事实上Oracle文档对于某些要点并不十分清楚。
发布于 2015-09-15 09:20:22
对于第二个问题,deployed意味着您的数据源在tomcat中的context.xml中声明。下面是oracle数据库的一个示例(您必须更改postgres的驱动程序):
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott" password="tiger" maxTotal="20" maxIdle="10"
maxWaitMillis="-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。
希望能帮上忙
https://stackoverflow.com/questions/32581833
复制相似问题