Questions autour des applets
Salut tout le monde !
Je suis confronté à un apparent problème de mémoire JAVA ou explorateur ou les deux mais au lieu de vous exposer mon code lourd et autres détails techniques, je me suis dis que je pourrais vous poser quelques question auxquelles je ne trouve pas de réponse ailleurs pour essayer de me mettre sur une piste.
1) quelle est la signification dans la console JAVA de
"basic: Récepteur de progression supprimé : sun.plugin.util.GrayBox...." ?
2) lors de l'execution répétitive de mon applet sur ma page web lorsque ça ne plante pas, je peux remarquer que l'utilisation mémoire dans le gestionnaire des tâches de Windows pour l'executable java.exe augmente sans cesse.
Donc y'a t'il un moyen de supprimer tout ce qui est en mémoire (concernant l'applet JAVA) en même temps que le lancement de mon applet ou juste avant ?
3) dans mon php qui lance l'applet je voulais savoir s'il était possible de faire des prints (style popup par exemple) entre les deux bornes <APPLET> ? afin de savoir si c'est l'applet qui déconne ou les données transmises à l'applet qui sont incomplètes.
Merci à tous !
Un peu plus de détails ...
Ne voyant pas de réponse j'imagine que tout ceci était très mal formulé ....
Je suis sur une piste pour mes problèmes de mémoire et je viens à vous pour mettre en application mes idées.
Petit topo introductif de mise en situation.
Je fais une page web pour afficher des données d'une base sous forme de graphique.
J'ai donc tout un enchainement de "form" qui apparaissent en fonction des choix effectués (fait avec Javascript), appelés level1,2,3,4 et 5(le graph).
La fin de cet enchainement propose un bouton "generate" associé à la fonction createGraph() :
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <script language="JavaScript">
function createGraph() {
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var leselect = xhr.responseText;
document.getElementById('level5').innerHTML = leselect;
}
}
var newDateFirst;
var newDateLast;
var selectedList_level3 = new Array();
xhr.open("POST","displayGraph.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
var dateFirst = document.getElementById('idDateFirst').value;
var dateLast = document.getElementById('idDateLast').value;
//change date format for later comparison
try{
checkDateFirst=dateFirst.split("/");
newDateFirst=checkDateFirst[2]+checkDateFirst[1]+checkDateFirst[0];
checkDateLast=dateLast.split("/");
newDateLast=checkDateLast[2]+checkDateLast[1]+checkDateLast[0];
} catch(e) {}
//selection from level3
var sel_level3 = document.getElementById('level3').getElementsByTagName('SELECT');
for (var i=0; i<sel_level3.length; i++) {
for (var j=0; j<sel_level3[i].options.length; j++) {
if (sel_level3[i].options[j].selected) {
selectedList_level3.push(sel_level3[i].options[j].value);
}
}
}
//selection from level4
var sel_level4 = document.getElementById('sel_level4');
var repGraph= sel_level4.options[sel_level4.selectedIndex].value;
if (newDateFirst<newDateLast) {
xhr.send("sellevel3="+selectedList_level3.toString()+"&typeRepGraphique="+repGraph+"&dateFirst="+dateFirst+"&dateLast="+dateLast+"&dateErr=no");
}
else {
xhr.send("typeRepGraphique="+repGraph+"&dateFirst="+dateFirst+"&dateLast="+dateLast+"&dateErr=yes");
}
}
</script> |
dans laquelle je fais appel à displayGraph.php dans lequel je récupère les données suivant les critères de recherche que j'envoie à l'applet JAVA via les bornes (ici simplifiées)
Code:
1 2 3 4 5 6 7
|
echo "<APPLET\n";
echo "CODEBASE=\"./applets\"";
echo "CODE=\"applet.init.AppletGraph\" WIDTH=100% HEIGHT=600\n";
echo "ARCHIVE=\"jcommon-1.0.16.jar, jfreechart-1.0.13.jar, jxl.jar, iText-5.0.1.jar, javacsv.jar, sAppletGraph.jar\">\n";
echo "<PARAM NAME=data VALUE=\"".$data."\">\n";
echo "</APPLET>\n"; |
Ensuite j'ai le code de l'applet JAVA
Code:
1 2 3 4 5 6 7 8
|
public class AppletGraph extends JApplet {
public void init() {
Où actuellement il y a tout le code !!!!!
}
} |
S'offre alors à l'utilisateur au moins 2 solutions quand l'applet a déjà été lancée une fois pour recharger l'applet:
1 - re-clic sur "generate" (solution idéale)
2 - recharger la page entière et refaire tous les choix dans les différents level
Dans le cas 1, une partie de ce qui est sur la page web reste en mémoire et au fur et à mesure qu'on recharge l'applet la mémoire explose.
Dans le cas 2, pas de soucis, excepté que c'est long et qu'il faut tout reprendre depuis le début les critères de la sélection ce qui rends désuète tout ce que j'ai développé jusque là dans ce sens.
Donc en fait y'aurait-il un moyen de faire que ça se passe comme dans le cas 2 mais dans le cas 1 ?
Ou autrement dit, y'a t-il un moyen de supprimer l'applet ou la JavaVM avant de recherger l'applet dans le cas 1 ?
Est-ce possible eventuellement à l'aide les méthodes detroy() et Runtime.getRuntime().exit(int) et si oui comment ?
Merci d'avoir lu jusqu'au bout !!!