Junto con saludar le comento mi problema, me encuentro implementando un sistema de monitoreo gps via web. La parte web lo tengo todo listo pero la aplicación que es el corazón de mi sistema es un serverSocket , el cual se encarga de la comunicacion con los GPS, leer los datos, validarlos e insertarlos en la bbdd. a simple vista la rutina es muy sencilla y la tengo implementada, pero resulta que al cabo de un o dos dias se cae el serverSocket por lo que yo de tengo el proceso y los inicio de nuevo pero no es lo optimo no he podido encostrar el problema por lo que acudo a los mas experimentados del foro para solicitar su ayuda.
adjunto los codigos.
Código
agradezco cualquier tips para sacar el proyecto adelante muchas gracias.
public void run(){ while (conectado){ procesarEntrada(); try { //System.out.println("\n hebra durmiendo"); } { escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error : en la hebra InterruptedException =" + ex.getMessage()+"\n"); } escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error : en la hebra Exception =" + ex.getMessage()+"\n"); } }//Fin while conectado // Cierro el imput stream y el socket try { in.close(); out.close(); try { conectar.close(); } { escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Al cerrar la conexion con la bbdd "+ex.getSQLState()+"\n"); } escribirA.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-" + p.getDeviceId() + "- Desconectado.\n"); //ig.setRecibido("Error al cerrar la conexion con el dispositivo "+p.getDeviceId()+" . "+ex.getMessage()+"\n"); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar la conexion con el dispositivo "+p.getDeviceId()+" : "+ex.getMessage()+"\n"); } escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar la conexion con el dispositivo "+p.getDeviceId()+" : "+ex.getMessage()+"\n"); } } //fin run public void leerSocket(){ try{ // Lee un mensaje enviado por el cliente this.mensajeRecibido = in.readLine(); //envia el id al dispositivo this.out.flush(); this.detener(); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S del dispositivo :" + ex.getMessage()+"\n"); try { in.close(); out.close(); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar el stream de entrada :" + ex1.getMessage()+"\n"); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar el stream de entrada :" + ex2.getMessage()+"\n"); } this.detener(); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception del dispositivo :" + ex.getMessage()+"\n"); try { in.close(); out.close(); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar el stream de entrada :" + ex2.getMessage()+"\n"); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar el stream de entrada :" + ex2.getMessage()+"\n"); } } } public void protocolizarMensaje(){ try{ if(this.mensajeRecibido != null) { this.p = this.protocolo.decode(this.mensajeRecibido); this.out.writeUTF(p.getDeviceId()); } escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al protocolizar el mensaje :" + ex.getMessage()+"\n"); } } public void insertarMensaje(){ if(this.mensajeRecibido != null){ if(this.mensajeRecibido.contains(">REV")){ if(this.p.getLatitude().equals(0.0)||this.p.getLongitude().equals(0.0)){ //ig.setRecibido("Conectando con el satelite\n"); escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-"+p.getDeviceId()+"-Conectando con el satelite\n"); } else{ //System.out.println(p.getTime()+"\n"+cont); this.db.insertarPosicion(conectar,p); //guardoId=p.getDeviceId(); System.out.println(this.getName()+" "+this.p.getDeviceId()+" "+this.p.getTime()+" "+this.p.getDate()+"-Posicion Actualizada\n"); escribirA.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-"+this.p.getDeviceId()+" - "+this.p.getTime()+" - Posicion Actualizada\n"); } } } this.mensajeRecibido=""; } public synchronized void procesarEntrada(){ //try { //this.semaforo.acquire(); leerSocket(); protocolizarMensaje(); insertarMensaje(); //this.semaforo.release(); //} catch (InterruptedException ex) { // escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: InterruptedException al interrumpir la hebra :" + ex.getMessage()+"\n"); } }