Bonjour !
Je travaille sur un prgramme depuis quelques temps et j'obtiens une erreur un peu aléatoire au bout de plusieurs heures.
Après pas mal de travail, j'ai réussi à réduire le code au maximum tout en ayant toujours l'erreur.
Voici l'erreur en question :
- BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection timed out
STACKTRACE:
...
Voici le code qui permet de créer l'erreur:
java.net.ConnectException: Connection timed out
public class MaClasse
{
public static int nb_connexions = 0;
public static void main(String[] args)
{
while(true)
{
nb_connexions++;
System.out.println("ouverture d'une connexion : "+nb_connexions);
Bdd bdd = new Bdd();
Bdd.Init("188.132.223.105", "3306", "base", "table", "pass");
bdd.Connection();
try { Thread.sleep(200); } catch(InterruptedException e) { System.out.println("Erreur sleep"); }
bdd.CloseConnection();
}
}
}
public class Bdd
{
public Connection connection = null;
private static GenericObjectPool connectionPool;
private static ConnectionFactory connectionFactory;
private static PoolingDriver driver;
public static void Init(String ip, String port, String base, String login, String pass)
{
String mysql_url = null;
if(port.equals(""))
{ mysql_url = "jdbc:mysql://"+ip+"/"+base; }
else
{ mysql_url = "jdbc:mysql://"+ip+":"+port+"/"+base; }
try
{
Class.forName("com.mysql.jdbc.Driver");
connectionPool = new GenericObjectPool(null);
connectionPool.setMaxActive(10000);
connectionFactory = new DriverManagerConnectionFactory(mysql_url,login, pass);
driver = new PoolingDriver();
driver.registerPool("example",connectionPool);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
System.out.println("Erreur lors de la connection à la BDD." + e);
}
}
public void Connection()
{
try
{
connection = connectionFactory.createConnection();
}
catch (Exception sql_erreur)
{
System.out.println("Erreur de connexion à la BDD." + sql_erreur);
}
}
public void CloseConnection()
{
try
{
connection.clearWarnings();
connection.close();
}
catch (SQLException e)
{
System.out.println("Erreur de fermeture de la BDD." + e);
}
}
}
Celle-ci apparaît souvent au bout de 2-3h voir plus sans raison apprente.
Avant qu'elle apparaissent, le programme à l'air de bloquer quelque part puisque le compteur nb_connexions n'augmente plus pendant un long moment.
J'ai lancé le programme sur 3 machines différentes :
- Chez moi en local : c'est ok
- Sur un serveur OVH : c'est ok
- Sur un VPS : l'erreur finit toujours par apparaitre.
Quelqu'un saurait comment résoudre le problème ?
Merci d'avance !
Cordialement.