MySQL Problem -> Absturz

javaprogger1987

Erfahrenes Mitglied
Also ich hab folgendes Problem mit meinem Programm (Servlet):
Am Anfang klappt alles wunderbar, nur nach einiger Zeit bekomm ich auf allen Webseiten die MySQL benutzen angezeigt, dass keine Verbindung zur MySQL Datenbank mehr hergestellt werden konnte.
Außerdem kann ich auch nicht mehr per SSH auf den Server zugreifen, wobei ich vermute, dass das daran liegt, dass alle Ressourcen belegt sind..

Ich benutze die neuste Tomcat-Version (5.?.?) und das neuste JSDK 1.5.0_4. Für die Verbindung zur Datenbank benutze ich mysql-connector-java-3.1.10.

//edit: Ach ja, was ich noch vergessen hab -> Wenn ich das Servlet im Tomcat Manager dann beende kann PHP wieder zur MySQL Datenbank verbinden.

Meine Code sieht so aus:

Die Methode rebuiltConnection hab ich schon eingebaut, weil ich den Verdacht hatte das es daran liegen könnte, geht aber trotzdem nicht..
Code:
  import java.sql.*;
  
  public class MySQL
  {
    private String sDrv = "com.mysql.jdbc.Driver";
    private String databaseName = "XXXXXXXXXX";
    private String sUrl = "jdbc:mysql://localhost:3306/" + databaseName;
    private String sUsr[] =
  	  {
  	  "X", "X", "X", "X"};
    private String sPwd[] =
  	  {
  	  "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X"};
  
    private Connection cn;
    private String tableName = "v_user";
    private Server main;
  
    public MySQL( Server main )
    {
  	try
  	{
  	  this.main = main;
  	  Class.forName( sDrv );
  	  cn = DriverManager.getConnection( sUrl, toString( sUsr ),
 									 toString( sPwd ) );
  	}
  	catch ( SQLException ex )
  	{
  	  ex.printStackTrace( System.out );
  	  System.out.println( ex.getErrorCode() );
  	  System.out.println( ex.getSQLState() );
  	  System.out.println( ex.getNextException() );
  	}
  	catch ( ClassNotFoundException ex )
  	{
  	  ex.printStackTrace( System.out );
  	}
    }
  
    //Öffnet die Connection neu...
    private void rebuildConnection()
    {
  	try
  	{
  	  cn.close();
  	}
  	catch (Exception e){}
  
  	try
  	{
  	  cn = DriverManager.getConnection( sUrl, toString( sUsr ),
 									 toString( sPwd ) );
  	}
  	catch( SQLException ex )
  	{
  	  ex.printStackTrace();
  	}
  	catch( Exception ex )
  	{
  	  ex.printStackTrace();
  	}
    }
  
    public void close() {
  	try {
  	  cn.close();
  	}
  	catch ( SQLException ex )
  	{
  	  ex.printStackTrace(System.out);
  	}
    }
  
  //Beispiel Methode - Alle anderen sind ähnlich aufgebaut:
    public int getEntryPoint (int roomId, int nr) {
  	int ret = -1;
  	  try {
  		Statement st = cn.createStatement();
  		ResultSet rs = st.executeQuery( "select * from v_rooms where id='" +
 									 (roomId+1) + "'" );
  		rs.next();
  		String tmp[] = rs.getString( "entryPoint"+nr ).split(",");
  		ret = Integer.parseInt(tmp[1]);
  		rs.close();
  		st.close();
  	  }
  	  catch ( SQLException ex )
  	  {
  		ex.printStackTrace();
  		rebuildConnection();
  	  }
  	return ret;
    }

Jemand eine Idee woran das liegen könnte?

Vielen Dank schonmal

Tobias
 
Schau doch mal mit MySQL Administrator wieviele Verbindungen tatsächlich erstellt werden .. Scheinbar werden die Verbindungen nicht richtig geschlossen.
 
Zurück