| |
Note
对于Tomcat4和5,postgresql.jar必须放在$CATALINA_HOME/common/lib中
|
|
|
所有 ConnectionPoolDataSource 和 DataSource 实现都可以存储在 JNDI 里。在非连接池的实现中, 每次从 JNDI 中检索对象都将创建一个新的实例, 带有和存储的实例同样的设置。对于连接池实现而言,同一个实例是在可得的情况下检索出来的(也就是说,没有其它 JVM 从 JNDI 中检索连接池),否则就创建同样设置的新的实例。
在应用服务器环境,通常是应用服务器的 DataSource 实例将存储在 JNDI 中,而不是 PostgreSQL ConnectionPoolDataSource 的实现。
在应用服务器环境,应用可以在 JNDI 中存储 DataSource, 这样它就不用制作一个指向 DataSource 的引用提供给 所有可能需要的应用组件使用它。一个这方面的例子在 Example 11.2. DataSource JNDI 实例代码 给出。
Example 11.2. DataSource JNDI实例代码
初始化连接池DataSource并且把它加到 JNDI 的代码看起来可能象这样
| |
PGPoolingDataSource source = new PGPoolingDataSource();
source.setDataSourceName("A Data Source");
source.setServerName("localhost");
source.setDatabaseName("test");
source.setUser("testuser");
source.setPassword("testpassword");
source.setMaxConnections(10);
new InitialContext().rebind("DataSource", source);
|
|
然后,使用来自池的连接代码看起来如下
|
Connection conn = null;try {
DataSource source = (DataSource)new InitialContext().lookup("DataSource");
conn = source.getConnection();
// use connection
} catch (SQLException e) {
// log error
} catch (NamingException e) {
// DataSource wasn't found in JNDI
} finally {
if (con != null) {
try {
conn.close();
} catch (SQLException e) {
} } }
|
|