首页 > 解决方案 > 配置 DataSource 并将其注册到 JNDI

问题描述

我跟进了数据源的 java doc java doc

我不理解下面的代码片段。

我创建了一个连接池数据源并向 jndi 注册。

cpds.setServerName("creamer");
cpds.setDatabaseName("COFFEEBREAK");
cpds.setPortNumber(9040);
cpds.setDescription("Connection pooling for " + "COFFEEBREAK DBMS");

Context ctx = new InitialContext();
ctx.bind("jdbc/pool/fastCoffeeDB", cpds);

现在我们可以检索这个连接池数据源

Context ctx = new InitialContext();
ctx.lookup("jdbc/pool/fastCoffeeDB");

我创建另一个数据源并注册它。

com.applogic.PooledDataSource ds = new 
com.applogic.PooledDataSource();
ds.setDescription("produces pooled connections to COFFEEBREAK");
ds.setDataSourceName("jdbc/pool/fastCoffeeDB");

Context ctx = new InitialContext();
ctx.bind("jdbc/fastCoffeeDB", ds);

现在我们可以检索这个连接池数据源

ctx = new InitialContext();
ds = (DataSource)ctx.lookup("jdbc/fastCoffeeDB");

我不清楚 setDataSourceName。

我们将 ConnectionPoolDS 添加到 PoolDataSource 中。

当我们检索数据源时

 ds = (DataSource)ctx.lookup("jdbc/fastCoffeeDB");

那么从这里返回的数据源是 PoolDataSource 类型还是 ConnectionPoolDS 类型?

标签: javadatasourcejndi

解决方案


使用这个

jdbc/pool/fastCoffeeDB JNDI 你直接指向 COFFEEBREAK 数据库。

在第二个 JNDI

jdbc/fastCoffeeDB

您正在使用以下语句

ds.setDataSourceName("jdbc/pool/fastCoffeeDB");

在上面你指向旧的 JNDI 名称,这意味着你间接指向 COFFEEBREAK 数据库

所以从语句 ds = (DataSource)ctx.lookup("jdbc/fastCoffeeDB"); 您将获得 ConnectionPoolDS。


推荐阅读