[英]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.