6

我正在使用 Java 开发一个 Web 应用程序,它需要与数据库连接。资源管理好很重要。该应用程序将位于 Tomcat 6 servlet 容器中,并且我已经实现了BoneCP来管理连接(我不能使用 Spring)。

我读过JNDI 查找 DataSource 太昂贵了,我正在考虑创建一个 DataSource 对象的单例,只获取一次 JNDI 资源,并为将来的连接返回相同的 DataSource。

问题:只创建一次 DataSource 并从同一个 DataSource 获取连接是个好主意吗?我不想获得相同的连接,只有相同的数据源。

谢谢 ;)

4

2 回答 2

4

使用池数据源,如下所述:

http://www.javaranch.com/journal/200601/JDBCConnectionPooling.html

于 2013-01-16T16:09:56.017 回答
4

是的,正如 Renjith 建议的那样,您只需要创建DataSource一次。我昨天实际上遇到了同样的问题。每次在我的“getConnection”方法中,我都注意到我不必要地创建了一个新的 InitialContext 和 DataSource。我修改了我的 Connection Manager 类,使其具有一个静态代码块,仅在第一次加载该类时才创建 DataSource 对象(在阅读了 BalusC 在正确使用 JDBC 连接池(Glassfish)中的回答之后)

我考虑过使用老式ServiceLocator模式(请参阅上面链接中 Pascal 的回答),但我觉得这对于我的需求来说有点过分了。

另一种可能性是您也可以@Resource在 DataSources 上使用带有注入的注释,但这似乎不适用于Tomcat 7.

于 2013-06-25T15:10:33.090 回答