Foros del Web » Programación para mayores de 30 ;) » Java »

Saber cuando el programa fue SUPRIMIDO

Estas en el tema de Saber cuando el programa fue SUPRIMIDO en el foro de Java en Foros del Web. estoy viendo como controlar sessiones de usuarios.. logeo y deslogeo.. Y me di cuenta q no estoy pudiendo saber, atrapar, o donde colocar el código ...
  #1 (permalink)  
Antiguo 03/05/2010, 07:48
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Exclamación Saber cuando el programa fue SUPRIMIDO

estoy viendo como controlar sessiones de usuarios..
logeo y deslogeo..
Y me di cuenta q no estoy pudiendo saber, atrapar, o donde colocar el código de cierreDeSessionDeUsuario(); cuando el programa es suprimido desde el Administrador de Tareas de Windows (Finalizar Tarea)..
De alguna forma esta supresión debe informar a la JVM este evento.. pero no se DONDE O COMO
  #2 (permalink)  
Antiguo 03/05/2010, 10:48
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Saber cuando el programa fue SUPRIMIDO

Prueba con esto a ver si sirve http://www.chuidiang.com/chuwiki/ind...e_Java_termina

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 10/05/2010, 05:47
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Respuesta: Saber cuando el programa fue SUPRIMIDO

tengo una duda sobre tu código..
el psvm (public static void main) debería NO arrojar nunca ningún tipo de exception?.. ya que supone ser la 1er y última instancia de un objeto, y estas exception no se pueden atrapar

volviendo a mi duda.. me tira este error

Exception in thread "main" java.lang.RuntimeException
at jgestion.Main.main(Main.java:35)
[TopLink Info]: 2010.05.10 08:38:35.359--ServerSession(31476927)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
[TopLink Info]: 2010.05.10 08:38:35.921--ServerSession(31476927)--file:/D:/777/NetBeansProjects/JGestion/build/classes/-JGestionPU login successful
Exception in thread "AWT-Windows" java.lang.IllegalStateException: Shutdown in progress
at java.lang.ApplicationShutdownHooks.add(Application ShutdownHooks.java:39)
at java.lang.Runtime.addShutdownHook(Runtime.java:192 )
at sun.awt.windows.WToolkit.run(WToolkit.java:277)
at java.lang.Thread.run(Thread.java:619)

Este es mi código:

Código C++:
Ver original
  1. public static void main(String[] args) {
  2.       Thread shutdownThread = new Thread() {
  3.          @Override
  4.          public void run() {
  5.             if (DAO.getEntityManager().isOpen()) {
  6.                java.awt.EventQueue.invokeLater(new Runnable() {
  7.  
  8.                   public void run() {
  9.                      new gui.JFP().setVisible(true);
  10.                   }
  11.                });
  12.             }
  13.             System.out.println("Esto se imprimirá antes de que la maquina virtual finalice");
  14.          }
  15.       };
  16.       Runtime.getRuntime().addShutdownHook(shutdownThread);
  17.       throw new RuntimeException();
  #4 (permalink)  
Antiguo 10/05/2010, 06:44
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Saber cuando el programa fue SUPRIMIDO

Ahí se ejecuta el código que tú pongas y si haces algo que lance una excepción, pues la excepción se lanza y la capturará la máquina virtual cuando llama al shutdown hook.

Da la impresión de que no puedes dedicarte a visualizar ventanas cuando se está cayendo la máquina virtual (bastante lógico por otro lado). El shutdown es para cerrar cosas antes de que termine la máquina virtual, no para comentar otra vez el programa con un hilo de invokeLater, mostrar ventanas a los usuarios, empezar otra vez todo el gestor de eventos de ventanas, etc.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 10/05/2010, 06:53
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Respuesta: Saber cuando el programa fue SUPRIMIDO

cierto.. estaba inicializando la gui dentro del Thread que solo debe ejecutarse en el cierre, ya lo corregí, puse las cosas donde correspondían..

lo que tuve que sacar de tu código es:
throw new RuntimeException();
ya que justamente esto es lo que no podía controlar y para eso ahora tengo el:
Thread shutdownThread

gracias
  #6 (permalink)  
Antiguo 21/05/2010, 05:56
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 17 años
Puntos: 41
Respuesta: Saber cuando el programa fue SUPRIMIDO

Solo para cerrar el tema..
Me fue imposible lanzar algún tipo de Exception o crear un mecanismo que me indique que la aplicación fue suprimida (en windows suprimiendo el proceso javax.exe y/o java.exe).
Lo sugerido por chuidian no cumplió con mi necesidad.

Etiquetas: cuando, fue, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:24.