Bonjour,

Voici mon problème. J'ai un programme JAVA avec une interface graphique, et différents accès a une base de donnée Oracle installée localement. Au bout d'un certain temps d'utilisation, l'erreur suivante apparait:
" ORA-12519, TNS: no appropriate service handler found
The Connection descriptor used by the client was : 127.0.0.1:1521:XE"

A priori l'erreur semble venir du fait qu'il y aurait trop de sessions / connexions. Une des solutions semblet être d'augmenter le nombre de sessions :
"alter system set processes=100 scope=spfile;
alter system reset sessions scope=spfile sid=’*';"

Cette solution m'enchante peu, vu que peut importe le nombre de processus que j'autorise, a un moment ou a un autre je l'atteindrai. Je me suis donc dis que mon erreur devait venir du fait que je ne fermais pas la connexion a la base de donnée. Pourtant même en fermant la connexion apres chaque acces a la bdd, l'erreur survient tot ou tard. Ci-joint la partie du code qui semble provoquer ce problème:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	public void calcul() {
 
 
		try {			
			   c = new ConnexionDB();	
			   con = c.getConnection();
			   s = con.createStatement();
 
			   FehlerOutput fo = new FehlerOutput();
			   int apnr = fo.getAktuelleAbpressungNr();
			   String query = "SELECT COUNT(*) FROM TABLE_PROTOTYP WHERE ABPRESSUNG_NR="+apnr;
			   ResultSet rs = s.executeQuery(query);
			   int anzahl = 0;
			   while (rs.next()) {
				   anzahl = rs.getInt(1);
			   }	
				float prozent = (float)anzahl / (float)this.Teile * 100;
				if (prozent > 100) {
					prozent = 100;
				}
 
				prozent = prozent * 100;
				prozent=Math.round(prozent);
				prozent /= 100 ;
 
				this.setAusschuss(prozent);
				rs.close();
				con.close();
			} 
 
 
		catch (SQLException e) {
			e.printStackTrace();
		}
 
	}
Cette methode (calcul) est appellé à intervalle régulier ( toutes les 4 secondes ).
La ligne a laquelle une erreur m'est indiquée est la suivante :
con = c.getConnection();


Et voici la classe qui me permet d'initialiser la connexion à la base de donnée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
public class ConnexionDB {
 
	private String url; 
	private String login;
	private String password;
	private Connection con = null;
 
	public ConnexionDB() {
		this.url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
		this.login = "yyy";
		this.password = "xxx";		
	}
 
	public ConnexionDB(String url, String login, String password) {
		this.url = url;
		this.login = login;
		this.password = password;
	}
 
	public Connection getConnection() {
	      try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			con = DriverManager.getConnection(this.getUrl(), this.getLogin(), this.getPassword());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			System.err.println("Error loading JDBC drivers");
		} catch (SQLException e) {
			e.printStackTrace();
			System.err.println("Error starting Connection");
		}
		return con;
	}
}
La ligne a laquelle une erreur m'est indiquée est la suivante :
con = DriverManager.getConnection(this.getUrl(), this.getLogin(), this.getPassword());


Si quelqu'un a une idée : je suis preneur !

Merci d'avance

Cordialement