postgresql 使用DataSource和Tomcat JNDI API

jgwigjjp  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(152)

我试图理解如何用DataSource ObjectJNDI API建立数据库连接。
我正在使用Intellij UE,并运行本地Tomcat-8Postgres-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 ObjectJNDI的注册?
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执行注册?还是部署意味着Tomcatcontext.xmlweb.xml配置(Tomcat 8 JNDI How-To)?
我真的很感激,如果有人有一个很好的一步一步的指示,这个问题,事实上,甲骨文文档是不是真的很清楚的一些点imho。

dsf9zpds

dsf9zpds1#

对于第二个问题,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
希望这对你有帮助

相关问题