Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/03/2007, 17:35
daemon_free
 
Fecha de Ingreso: marzo-2006
Mensajes: 54
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: conexion servlet

el problema no me parece q este en los Streams sino en la sincronía de las acciones q estas tratando de ejecutar, déjame explicarme...

cuando en el hilo del midlet ejecutas un
con.start();
se va a ejecutar el método run() de la clase Conexion en otro hilo y es ese método el q va a tratar de establecer la comunicación con el servlet.
pero la llamada a start() retorna el control casi inmediatamente al hilo del midlet, así q mientras por un hilo se esta ejecutando el método run() y se esta tratando de establecer la conexión, en el hilo del midlet haces de repente esta llamada:
con.enviarMensaje("hola");
es decir, estas forzando a la conexión a que envíe un mensaje, pero ni siquiera sabes si la conexión se pudo efectuar, puede q al hacer esta llamada todavía este ejecutándose el método run() del Conexion, que no se haya obtenido el objeto HttpConnection , que este todavía conectándose o incluso q haya ocurrido un error en la conexión ( error del q no te enteras debido al catch vacío en el método run() )

esto explicaria el porque al poner la llamada
enviarMensaje("hola")
dentro del método run() si funciona, es debido a que se ejecutan esas acciones en el mismo hilo, la llamada a enviarMensaje() se ejecuta solo después de ser establecida la conexión.

creo q puedes solucionar esto de 2 formas:
1- teniendo en el objeto Conexion una lista de los mensajes q aun no se han podido enviar, en este caso enviarMensaje() adicionaría el mensaje a esa lista si ve q todavía no se ha podido establecer la conexión con el servlet.

2- haciendo q el método enviarMensaje() espere a que se efectúe la conexión, puede q tengas q hacer uso de los métodos wait() y notify()


saludos;
da_fr.