关闭SQL连接Java Web服务
我正在用Java编写一个Web服务,创建并调用这个类:关闭SQL连接Java Web服务,java,sql,mysql,web-services,garbage-collection,Java,Sql,Mysql,Web Services,Garbage Collection,我正在用Java编写一个Web服务,创建并调用这个类: public class Manager{ private Connection aConnection; public CacheManager(){ //We get a connection aConnection = java.sql.DriverManager.getConnection("jdbc:mysql://localho
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
}
主要问题是,在调用webservice之后,连接没有立即关闭。这意味着对webservice的100次调用将创建100个到数据库的连接。如果我等待2分钟,将创建MySQL错误“连接的用户太多”,对象将被垃圾收集器销毁,webservice可以再次工作
有人知道如何绕过这个问题吗
谢谢 我认为您应该维护一个数据库连接池。例如,您可以参考。这样,在初始化类时,可以在构造函数中设置数据库连接池(比如说10个到数据库的连接)。在insertIntoDB方法中,首先从连接池获得连接,执行数据库CRUD操作,最后返回到连接池的连接。这样,您就永远不会通过创建多个连接来对数据库施加压力。
每次调用创建连接也会使速度变慢,threr是此调用的反模式。我必须在glassfish上创建一个连接池,然后每次我需要程序中的连接时,我都会“获取”一个连接,然后立即释放它。我不再在构造函数中获得连接,只是在我的函数中