单例模式和数据源

6
我正在使用Java开发一个web应用程序,它需要连接数据库。资源的良好管理非常重要。该应用程序将运行在Tomcat 6 servlet容器中,我已经实现了BoneCP来管理连接(无法使用Spring)。
我读到过使用JNDI查找DataSource的开销太大,我考虑创建一个DataSource对象的单例,只获取一次JNDI资源,并为以后的连接返回相同的DataSource。
问题:创建一个DataSource只能获取一次并从相同的DataSource获取连接是否是一个好主意?我不想获得相同的连接,只想获得相同的DataSource。
谢谢 ;)

你应该创建一个单一的数据源,并从数据源中实现的连接池获取连接。 - Renjith
2个回答

4

4
是的,就像Renjith建议的那样,你只需要创建一次DataSource。实际上,我昨天遇到了同样的问题,在我的"getConnection"方法中,我发现我不必要地每次都创建一个新的InitialContext和DataSource。我修改了我的连接管理器类,增加了一个静态代码块,只在第一次加载类时创建DataSource对象(在阅读BalusC在Proper usage of JDBC Connection Pool (Glassfish)的答案后)。
我考虑过使用老派的ServiceLocator模式(参见上面链接中的Pascal的答案),但我觉得这对我的需求有点过于繁琐。
另一个可能的选择是,你也可以使用@Resource注解和数据源的注入,但这似乎在Tomcat 7上不起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接