Preciso saber se há alguma forma, se existir, de saber se minha aplicação já está rodando na máquina. Isto para evitar que o mesmo programa seja aberto duas ou mais vezes.
Se exitir alguma forma de fazer isto, poderiam me dizer qual a melhor forma de faze-lo?
Nunca precisei de fazer isso mas já vi por aqui mais que uma vez a sugestão de abrir um socket para uma porta local no inicio da aplicação. Se a porta já estiver em uso é porque outra instância já está em execução.
Eu não faria por socket, vai que alguem em um dia resolve usar essa mesma porta e a desgraça simplesmente não funciona ??
No inicio da execução do aplicativo verifique se existe um arquivo com o nome da aplicação por exemplo, se não tiver vc cria se tiver vc encerra a aplicação. Só tome cuidado nos tratamento de exceptions, que possam resultar em uma finalização da aplicação, de deletar o arquivo em questão antes de encerrar o aplicativo…
[quote]Ou de não deletar…
Ou então, usar um arquivo batch (.bat ou .sh) que verifica com chamadas ao sistema se há um processo com o nome do programa antes de chamar a aplicação em si.[/quote]
Geralmente eu escrevo um executável escrito em C++ chamando a aplicação java pelo jre. Fazendo desta forma eu creio que dê pra controlar o processo da aplicação no sistema… Enfim, vou dar uma pesquisada nos processos em C.
[quote=Guitar_Men]Eu não faria por socket, vai que alguem em um dia resolve usar essa mesma porta e a desgraça simplesmente não funciona ??
No inicio da execução do aplicativo verifique se existe um arquivo com o nome da aplicação por exemplo, se não tiver vc cria se tiver vc encerra a aplicação. Só tome cuidado nos tratamento de exceptions, que possam resultar em uma finalização da aplicação, de deletar o arquivo em questão antes de encerrar o aplicativo…[/quote]
Ou de não deletar…
Ou então, usar um arquivo batch (.bat ou .sh) que verifica com chamadas ao sistema se há um processo com o nome do programa antes de chamar a aplicação em si.