Bonjour,

Je développe en JSP sous Tomcat 5.5, le principe général de mon application est que je lance a partir d'une bouton, une fenêtre popup (HTML et nom JFrame), sur laquelle j'effectue un affichage (une sorte d'animation c'est bare de progression) + le lancement d'un thread qui en parallèle de mon animation, lance un job de fond oracle (procédure et fonctions sql ...), une fois le travail des procédures SQL terminé, j'inserer un bloc javascript, qui me lancer une boite de dialogue (grâce a un alert), puis me ferme ma fenêtre popup (donc une fois le travail de fond cote oracle achevé, on ferme tout), et voici mon code:


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
37
38
39
40
41
42
43
44
45
46
47
 
<%
 
                  SwingUtilities.invokeLater(new Runnable() {    
            public final void run() { 
                        
                        System.out.println("********1******* \n");                      
                        System.out.println("********2******* \n");
                         
                    String DB_User              = "user";
                    String DB_Password          = "PWD";
                    String DB_Service           = "service";
                    String DB_IPAdress          = "server";
                    String DB_Port              = "1522";
                    String DB_Connection        = "jdbc:oracle:thin:@"+DB_IPAdress+":"+DB_Port+":"+DB_Service;
                         
                         try
             {                          
             Connection con=DriverManager.getConnection(DB_Connection,DB_User,DB_Password);  // Connexion vers la base de données cible
                         Statement statement =con.createStatement();
                         String query="";
                                                                         
                         statement.executeQuery("REequête SQL n°1");                    // Execution requete SQL n°1                  
                         System.out.println("En cours d'execution \n ");                         
                     query= "Requête SQL n°2";                                          // Execution requete SQL n°2    
                     statement.executeQuery(query);
                     CallableStatement proc = con.prepareCall("{call Procedure}");      // appel d'une procedure SQL
                     proc.execute();                                               
                     con.close();       
                         
                    %>
                    <script LANGUAGE="JavaScript"> 
		    alert('Le chargement des données est terminé'); 	
                    window.close('formname');  // formname est le nom de ma fenetre HTML popup	    
		    </script>
                    <%
                }
                 catch(SQLException sqle) 
                 {               
                 System.out.println("Erroooooooooooooooooooooooooor ");
                 }                                                                                                                                                                                                                                                                                                                                                                                                                                              
                 System.out.println("********3******* \n");
                 System.out.println("********4******* \n");
                 System.out.println("********5******* \n");
                                                                }                                                                                                                                                                                                                       
                       }        
                              );  %>
Le soucis est que qd j'execute le tout, je reçois l'erreur suivante:

"Cannot refer to a non-final variable out inside an inner class defined in a different method", mais si je supprime le bloc javascript, tout fonctionne bien, a l'exception que la fenêtre popup reste ouvert mémé après la fin des procédures SQL,

Quelqu'un peut il m'aider

Merci d'avance