Singleton和DataSource

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Singleton和DataSource相关的知识,希望对你有一定的参考价值。

我正在使用Java开发Web应用程序,它需要与数据库建立连接。良好的资源管理非常重要。应用程序将在Tomcat 6 servlet容器中,我已经实现了BoneCP来管理连接(我不能使用Spring)。

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

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

谢谢 ;)

答案

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

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

另一答案

是的,正如Renjith建议的那样,你只需要创建一次DataSource。我昨天遇到了同样的问题。每次在我的“getConnection”方法中,我都注意到我正在不必要地创建一个新的InitialContext和DataSource。我修改了我的Connection Manager类,以获得一个静态代码块,只有在第一次加载类时才会创建DataSource对象(在读取BalusC在Proper usage of JDBC Connection Pool (Glassfish)中的答案之后)

我想过使用老式的ServiceLocator模式(参见上面链接中Pascal的回答),但我觉得这对我的需求来说太过分了。

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

以上是关于Singleton和DataSource的主要内容,如果未能解决你的问题,请参考以下文章

java当中JDBC当中请给出一个SQLServer DataSource and SingleTon例子

java当中JDBC当中请给出一个Oracle DataSource and SingleTon例子

项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde(代码片段

单例模式

MyBatis框架—动态 SQL配置文件事务

Android 概念:Datasource 属于 Activity 还是 Fragment