Singleton和DataSource

时间:2013-01-16 16:03:30

标签: java web-applications singleton jndi connection-pooling

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

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

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

谢谢;)

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

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

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

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