| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2006 20:45:18
|
EderBaum
JavaBaby
![[Avatar]](/images/avatar/b937384a573b94c4d7cc6004c496f919.jpg)
Membro desde: 27/07/2005 22:58:32
Mensagens: 92
Offline
|
Tem como eu saber se minha aplicação Swing já está rodando na maquina.
No caso eu queria impedir que o cara abrisse mais de uma vez meu programa na mesma máquina
|
sabesim.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/09/2006 00:13:25
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Procure aqui no GUJ. A minha solução é abrir um socket com determinada porta. Uma 2a tentativa terá sucesso. Eu até já postei um código completo.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 15:17:40
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Alguém tem esse exemplo usando Socket, tinha feito o controle usando um arquivo mas tive sérios problemas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 16:25:45
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Nao tem muito o que exemplificar:
- Abra um socket listener numa porta qualquer
- Ao iniciar a aplicacao, verifique se tem alguem escutando naquela porta (tente conectar la)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 16:31:33
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Predrosa,
Vc. poderia descrever seus "Sérios Problemas" ?
Em princípio, o uso de um arquivo tem até a ventagem em relação ao método do socket de não permitir a exclusividade por usuário, e não global.
A seqüência correta para implementar um lock é :
1. Criar arquivo temporário no mesmo diretório do arquivo de lock
2. Tentar renomear o arquivo temporário para o arquivo de lock,
3. Se o rename falhar, o arquivo de lock já existe
Problema adicional a ser resolvido: Se a aplicação morrer via kill, o arquivo de lock fica para trás. Solução: Usar o "evitor pattern": Sua aplicação deve manter o lock "fresco", atualizando seu conteúdo de tempos em tempos. Outros processos podem determinar que o processo que criou o lock morreu olhando a data de alteração do arquivo.
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 16:52:52
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Então cara, meus sérios problemas ocorriam pois quando eu iniciava a aplicação criava um arquivo local e deletava ao fechar a aplicação mas a mesma quando era fechada por ctrl + alt + del não deletava o arquivo, o processo falhava.
Ao chamar a classe inicial eu perguntava existe o arquivo, caso retorna-se true eu fechava, mas achei interessante esse seu esquema, poderia dar mais detalhes com exemplos?
cv, consigo abrir uma socket mais como saber se alguém esta escutando essa porta?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 17:50:45
|
psevestre
JavaEvangelist
Membro desde: 13/05/2005 12:53:19
Mensagens: 432
Localização: São Paulo
Offline
|
Ao chamar a classe inicial eu perguntava existe o arquivo, caso retorna-se true eu fechava, mas achei interessante esse seu esquema, poderia dar mais detalhes com exemplos?
Sua abordagem inicial tinha dois problemas:
1. O que vc. viu, ou seja, se houver crash na máquina o arquivo de lock não será removido.
2. Existe a possibilidade de uma "corrida" entre duas instâncias disparadas simultaneamente. A seqüência testa-se-existe-se-não-existir-roda é o caso típico para o qual foi criada a instrução TAS(test-and-set) nas CPUs.. Vc. precisa executar esta seqüência de forma atômica, algo que o Java não vai te dar no contexto inter-processos. Por outro lado, a operação de rename de um arquivo é atômica e, em plataforma (win)dos, falha quando o arquivo destino já existe.
Para o evitor, use o método "setLastModified em um Timer.
Última coisa, se for usar o Socket, é só tentar criar um ServerSocket em uma porta conhecida. Se vc. conseguir criar o socket, então não havia ninguem ativo. Caso contrário já havia alguem a ouvir.
|
http://justaphilpicks.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/10/2006 19:40:27
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Pedrosa wrote:cv, consigo abrir uma socket mais como saber se alguém esta escutando essa porta?
Tenta abrir uma conexao nela, uai!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/10/2006 11:32:45
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
O que preciso adaptar nesse método:
No construtor da tela inicial da minha aplicação eu chamo esse método, mas não esta funcionando, esta sempre retornando true.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/10/2006 17:18:11
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Alguma sugestão?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/10/2006 17:53:03
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Voce nao esta mandando o ServerSocket escutar. Da uma lida no javadoc ou em algum exemplo por ai
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/10/2006 17:38:38
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Olhei o javadoc e não achei, alguém pode me ajudar, qual método devo usar para saber se uma porta do Socket esta sendo usada, o meu código sempre retorna true.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/10/2006 18:06:01
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Pedrosa wrote:alguém pode me ajudar
Como eu já disse, este assunto já foi discutido várias vezes aqui no GUJ e você insiste em não usar as buscas.
Apesar do CV já ter explicado tudo, mesmo assim vou dar mais uma dica:
Veja: http://www.guj.com.br/posts/list/30/19037.java#100341
E leia as 3 páginas do tópico
Leia também: http://www.guj.com.br/posts/list/22646.java
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2006 10:40:52
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Show Luca, extremamente simples e muito funcional!
|
|
|
 |
|
|