Como eu faço para abrir minha aplicação java apenas uma vez na maquina?ou seja ao tentar abrir o sistema novamente, ele aparecerá uma mensagem dizendo que o sistema já esta aberto.
eu tentei o seguinte código:
mas toda vez q eu abro uma janela dentro do sistema , ele mostra a mensagem que ja se encontra aberto o programa.
[code]
try {
//verificar se o programa se encontra aberto:
s = new ServerSocket(9581);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "ATENÇÃO:\n\nESTE PROGRAMA JÁ SE ENCONTRA ABERTO!!!","SOFTWELL",2);
s.isClosed();
}
[/code]
Vc poderia combinar o Singleton com dois arquivos marcadores.
atenção, pois se o programa se desligar forçadamente, ele poderia não interpretaria os arquivos de forma correta.
O primeiro arquivo diria se o programa está aberto e o segundo se a aplicação foi desligada normalmente da ultima vez.
certamente deverão existir opções melhores, mas se ninguém mais encontrar solução melhor, quando chegar do trabalho penso em uma e posto aqui. vou acompanhar o tópico.
File file = new File("fileToLock.dat");
// Creates a random access file stream to read from, and optionally to write to
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
FileLock lock = channel.lock();
Só uma curiosidade: essa estratégia de obter lock é muito utilizada e o Eclipse faz isso para saber se a workspace está sendo usada (só não me lembro agora em qual arquivo ele faz o lock, mas fica dentro do diretório .metadata).