VWP - problème d'accès au SessionBean à partir d'un autre Thread
Bonjour,
Je développe avec NetBeans 5.5 et le VWP une application comprenant des phases de chargement assez longues entre 2 pages ( accès aux bbdd)
J'ai donc eu besoin de développer une petite page de chargement.
Voila ma mèthode :
1. Page 1 : A l'action du bouton de validation , je crée un nouveau Thread dont la mèthode run contient le traitement long... Pendant ce temps la page 1 se dirige vers une autre page de chargement
2.Page chargement : animation d'une barre de chargement... A la fin de l'execution du thread créé précédemment un bouton "suivant" est rendu activable, celui-ci renvoie à la page2.
3 ... Affichage des résultats
Pour le moment je me suis contenté de programmer un modèle "bidon" avec un sleep au lieu du chargement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
public String button1_action() {
// TODO: Process the action. Return value is a navigation
// case name where null will return to the same page.
new Thread(){
public void run() {
System.out.println("is running");
try{
Thread.sleep(duree);
} catch(Exception e){
System.out.println("erreur sleep");
}
System.out.println("finished running");
getSessionBean1().setFini(true);
}
}.start();
return "vers_page_chargement";
} |
Or l'instruction getSessionBean1().setFini(true); me renvoie l'erreur suivante :
Exception in thread "Thread-192"
java.lang.NullPointerException
Quelqu'un sait-il pourquoi le sessionbean n'est pas accéssible depuis le thread crée?? (cette même instruction fonctionne correctement hors du thread)
Y-a-til une erreur théorique dans ma méthode?? ( je suis inexperimenté dans l'usage des Thread.... et du dvpmt Web en Java tout court d'ailleurs)
PS : Je sais que ce setFini(true) en fin de code n'est pas le moyen le plus "propre" de savoir qu'un Thread a terminé son éxécution mais ca me servait surtout pour tester l'accès au SessionBean dont j'ai grandement besoin dans mon traitement réel.
Merci d'avance!!!