我跟进了java文档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类型?
最佳答案
使用这个
jdbc/pool/fastCoffeeDB JNDI you are directly pointing to COFFEEBREAK database.
在第二个 JNDI
jdbc/fastCoffeeDB
您正在使用以下语句
ds.setDataSourceName("jdbc/pool/fastCoffeeDB");
在上面您指向旧的 JNDI 名称,这意味着您间接指向 COFFEEBREAK 数据库
所以来自声明 ds = (DataSource)ctx.lookup("jdbc/fastCoffeeDB"); 您将获得 ConnectionPoolDS。
关于java - 配置数据源并将其注册到 JNDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53993424/