problème de connexion HTTP J2ME avec Threading - Java - Programmation
MarshPosté le 24-06-2005 à 16:12:54
Salut, je dois faire une application qui nécessite d'effectuer plusieurs connexions successives avec l'exterieur. Pour une compatibilité optimale je suis en MIDP 1.0 et je ne dispose donc que du HttpConnection.
Mon programme principal fabrique des requetes sous forme de byte[] et attend en réponse également des byte[]. Les requetes s'effectuent sur pression d'une commande. J'utilise l'emulateur du J2ME Wireless Toolkit 2.2 de Sun lors de l'execution, il me renvoie un warning m'indiquant que les opérations réseau ne doivent pas être effectués dans le même thread que le gestionnaire de commandes. J'ai donc créér une classe utilitaire pour transfèrer mes données:
Code :
public final class HttpSender extends Thread implements HttpParameter {
public synchronized byte[] getResponse() throws Exception {
while(!achieved) {
try {
wait();
} catch(Exception exc) {
exc.printStackTrace();
}
}
return(bufferR);
}
Mon problème est qu'avec ce code, je reste bloqué sur le panneau d'autorisation d'utiliser le réseau. N'étant pas vraiment le roi de la programmation multithread, je ne vois pas ce qui cause mon erreur.
Je tiens à préciser que si je n'effectue pas une synchronisation entre mes threads, lorsque je lis la réponse, la methode run n'est pas encore achevée et bufferR est null.
Quelqu'un saurait t'il ce qui ne vas pas dans mon code ou aurait un bon tuto ?
[ps: j'arrive à faire des tests de base concluant avec mon servlet, ex: le tuto de sun sur MIDP. Mon prog reste planté sur le Connector.open(...)]
Marsh Posté le 24-06-2005 à 16:12:54
Salut, je dois faire une application qui nécessite d'effectuer plusieurs connexions successives avec l'exterieur. Pour une compatibilité optimale je suis en MIDP 1.0 et je ne dispose donc que du HttpConnection.
Mon programme principal fabrique des requetes sous forme de byte[] et attend en réponse également des byte[]. Les requetes s'effectuent sur pression d'une commande. J'utilise l'emulateur du J2ME Wireless Toolkit 2.2 de Sun lors de l'execution, il me renvoie un warning m'indiquant que les opérations réseau ne doivent pas être effectués dans le même thread que le gestionnaire de commandes. J'ai donc créér une classe utilitaire pour transfèrer mes données:
Mon problème est qu'avec ce code, je reste bloqué sur le panneau d'autorisation d'utiliser le réseau. N'étant pas vraiment le roi de la programmation multithread, je ne vois pas ce qui cause mon erreur.
Je tiens à préciser que si je n'effectue pas une synchronisation entre mes threads, lorsque je lis la réponse, la methode run n'est pas encore achevée et bufferR est null.
Quelqu'un saurait t'il ce qui ne vas pas dans mon code ou aurait un bon tuto ?
[ps: j'arrive à faire des tests de base concluant avec mon servlet, ex: le tuto de sun sur MIDP. Mon prog reste planté sur le Connector.open(...)]