繁体   English   中英

关闭SQL连接Java Webservice

[英]Close SQL connection Java Webservice

我正在用Java编程一个WebService来创建并调用此类:

    public class Manager{

        private Connection aConnection;


        public CacheManager(){
            //We get a connection
                aConnection = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mydb?user=root&password=";


        }
// Insert a datalist into a table
    public void insertIntoDB(List listData, String tableName, StringData previousData)
    {

       // Some code using database

        }

主要问题是在调用Web服务后,连接没有立即关闭。 这意味着对Web服务的100次调用会创建与数据库的100条连接。它会导致MySQL错误“连接的用户过多”。如果我等待2分钟,则对象将被垃圾收集器破坏,并且Web服务将可以再次工作。

有人对如何绕过这个问题有想法吗?

谢谢!!

我认为您应该维护一个数据库连接池。 例如,您可以参考C3P0 这样,在初始化类时,可以在构造函数中设置数据库连接池(例如与数据库的10个连接)。 在insertIntoDB方法中,首先从连接池获得一个连接,执行数据库CRUD操作,最后将连接返回给该池。 这样,您将永远不会通过创建多个连接对数据库施加压力。 为每个呼叫创建连接也会使其变慢,threr是称为Connection Thrashing的反模式。

我必须在glassfish上创建一个连接池,然后每次在程序中需要连接时,我都会“获取”一个连接,然后立即释放它。 我不再在构造函数中获得连接,而只是在函数内部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM