2013-01-08 44 views
1

我正在为JBOSS AS.Code中配置的数据源进行jndi查找,如下所示。如何验证连接池返回的连接对象?

initialContext = new InitialContext(props);

dataSource = (DataSource)initialContext.lookup(bundle.getString(“jndiName”));

connection = dataSource.getConnection();

这段代码放在doPost的servlet中。此外,我很放心地打电话

connection.close()时

使用连接对象之后。

我的数据源配置具有以下条目

<min-pool-size>1</min-pool-size> 
<max-pool-size>1</max-pool-size> 

按我的连接池的理解,每次我做出的servlet相同的连接对象的请求被datasource .getConnection()调用返回(因为我已经指定的最小值和最大值池大小为1,并且关闭调用不会完全关闭数据库连接)。

现在我如何验证相同的连接对象正在返回?

+1

为什么要验证连接对象?一种方法在本地缓存对象,然后检查缓存的值。 –

+0

只是为了确保连接不会每次都创建到数据库。我发现没有办法检查是否启用或禁用共享池 –

+1

1种方法是检查数据库服务器以查看创建了多少个连接。 –

回答

0

你实际上不能确定它是否是相同的连接。这可能与连接数据库有关,所以必须创建另一个连接。为什么你想验证连接?也许你可以保存散列值并比较它们?

+0

只是为了确保连接不会每次都创建到DB。我发现没有办法检查是否启用或禁用了共享池。 –

+0

当最小池大小为0时,它是否会禁用池? –

+0

如果你只想看到这一点,试着打开你的连接池工具(可能是你正在使用DBCP)的日志记录和wathc日志中发生了什么。 – partlov