Hi,
I am struggling to close mysql connections from my application. As the application continues, more and more connections (threads) open until I get errors back from mysql.
I close the statement and resultset and dereference everything, but the connections increase until i kill the class itself. The class runs in a
thread and just loops continously doing some housekeeping on the db.
Any help will be very much appreciated.
Here is my code:
import ie.omk.smpp.*;
import ie.omk.smpp.net.*;
import ie.omk.smpp.message.*;
import java.util.*;
import java.sql.*;
class Ccheckregister extends Thread {
java.sql.Connection conn;
Ccheckregister() {
System.out.println("check register class");
try{
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection("jdbc:mysql://**********", "*****", "*****");
}
catch(Exception ex){System.out.println ("sql except check register");}
}
public void run() {
while (true) {
try{
this.sleep(60000);
CReadData read = new CReadData();
String email = "";
String token = "";
Vector vec = new Vector();
Statement st1 = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st1.executeQuery("SELECT non_verified_received.MSISDN, non_verified_received.message, Users.email FROM non_verified_received, Users WHERE Users.MSISDN = non_verified_received.MSISDN");
while (rs.next()){
email = rs.getString("Users.email");
token = rs.getString("non_verified_received.message");
read.retrieveAndSendMail(token, email, "");
vec.add(rs.getString("non_verified_received.MSISDN"));
}
for(int x = 0; x < vec.size() - 1; x++)
st1.executeUpdate("DELETE FROM non_verified_received WHERE MSISDN = '" + vec.get(x) + "'");
st1.close();
read = null;
email = null;
token = null;
st1 = null;
rs = null;
}
catch(Exception ex){System.out.println("Critical Error: Ccheckregister (sleep)");System.out.println(ex);}
}
}
}