Lo que me gusta, me interesa y me motiva…
RSS icon Home icon
  • JAVA SWING – UNA SOLA INSTANCIA

    Si necesitas controlar que solo una sola instancia de tu aplicación swing se ejecute, lo que puedes hacer es abrir un socket en un puerto y controlar que puedas abrirlo. Si no puedes abrirlo es porque otra instancia de tu aplicación ya lo abrió con anterioridad, lo que significa que se esta ejectutando.
    De esta forma evitas que el usuario abra dos instancias de tu app.

    import java.net.ServerSocket;
     
    import org.apache.log4j.Logger;
     
    /**
     *
     * @author peiretti
     *
     */
    public class SingleAppSwing {
     
        private static final Logger logger = Logger.getLogger(SingleAppSwing.class);
     
        private static final int port = 9988;
     
        static ServerSocket serverSocket;
     
        public static void main(String[] args) {
     
            logger.debug("Intentando iniciar la aplicacion SingleAppSwing");
     
            if (!singleAPP(port)) {
                logger.error("No se pudo iniciar la aplicacion porque hay otra instancia");
                throw new RuntimeException("No se pudo iniciar la aplicacion porque hay otra instancia");
            }
     
            // resto de tu app
     
        }
     
        private static boolean singleAPP(int port) {
     
            try {
                serverSocket = new java.net.ServerSocket(port);
            } catch (java.io.IOException ex) {
                return false;
            }
            return true;
     
        }
     
    }

    Entradas relacionadas

    Leave a reply