Abrir .jar apenas uma vez

blz galera…

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]

creio que um Singleton pode resolver.

pensando melhor… não é tão simples.

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.

Use um FileLock em um arquivo, se conseguir obter o lock, o aplicativo não está em uso, caso contrário, está.

Um exemplo de como obter o lock:

[quote=Ataxexe]Use um FileLock em um arquivo, se conseguir obter o lock, o aplicativo não está em uso, caso contrário, está.

Um exemplo de como obter o lock:

http://examples.javacodegeeks.com/core-java/nio/filelock/create-file-lock-on-file/[/quote]

massa!

uma classe que faz a marcação pra gente:

	            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).

Provavelmente tens esse código no sitio errado.