Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单例和数据源_Java_Web Applications_Singleton_Jndi_Connection Pooling - Fatal编程技术网

Java 单例和数据源

Java 单例和数据源,java,web-applications,singleton,jndi,connection-pooling,Java,Web Applications,Singleton,Jndi,Connection Pooling,我正在用Java开发一个web应用程序,它需要一个与数据库的连接良好的资源管理非常重要。该应用程序将位于Tomcat6Servlet容器中,我已经实现了BoneCP来管理连接(我不能使用Spring) 我已经读到数据源的JNDI查找太昂贵了,我正在考虑创建一个单一的数据源对象,只获取一次JNDI资源,并返回相同的数据源以供将来的连接 问题:只创建一次数据源并从同一数据源获取连接是否是一个好主意?我不想获取相同的连接,只想获取相同的数据源 谢谢;) 使用池数据源,如下所述: 是的,正如Renjit

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

我已经读到数据源的JNDI查找太昂贵了,我正在考虑创建一个单一的数据源对象,只获取一次JNDI资源,并返回相同的数据源以供将来的连接

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


谢谢;)

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


是的,正如Renjith所建议的,您只需要创建一次
数据源。事实上,我昨天也遇到了同样的问题。每次在我的“getConnection”方法中,我都注意到我不必要地创建了一个新的InitialContext和数据源。我修改了我的ConnectionManager类,使其具有一个静态代码块,该代码块仅在第一次加载该类时(在中阅读了BalusC的答案后)才创建DataSource对象

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


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

,您应该创建一个数据源,并从数据源中实现的池中获取连接。