Pegar a instancia de uma classe  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Tem como pegar a instancia de uma classe que já está rodando?
Por que no meu aplicativo eu só posso inicializa uma classe uma única vez e queria saber também se tem como "matar" esta instancia que esta rodando?

This message was edited 1 time. Last update was at 15/07/2008 16:04:44


www.bau-de-dev.com
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Vc pode passar null para todas as referências daquele objeto e esperar o garbage collector.

Entretanto acho q no seu caso tem alguma coisa mal explicada...

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
BrunoCarlo
Virtual Machine Man

Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline

Ola,


Dê uma olhada no padrão singleton.. dae fica facil matar ela.

Evoluir é preciso

Sempre bom olhar-API
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

BrunoCarlo wrote:Dê uma olhada no padrão singleton.. dae fica facil matar ela.


Hã? É justamente o contrário!

O Singleton não funciona bem em Java. É difícil garantir que o objeto seja realmente singleton.
E, graças ao Garbage Collector, é praticamente impossível matar um Singleton em Java.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Concordo ficou meio confuso...
O aplicativo funciona desta maneira, o usuário pode inicializar um processo, que no meu caso é esta classe que só pode ser inicializada uma única vez, esta classe fica rodando direto, não para, se o usuário fechar o browser e abrir novamente o aplicativo tem que indicar que a classe ainda está rodando.
O usuário também tem a possibilidade de parar o processo, por isso eu preciso pegar a instância da classe.

www.bau-de-dev.com
BrunoCarlo
Virtual Machine Man

Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline

ViniGodoy wrote:
BrunoCarlo wrote:Dê uma olhada no padrão singleton.. dae fica facil matar ela.


Hã? É justamente o contrário!

O Singleton não funciona bem em Java. É difícil garantir que o objeto seja realmente singleton.
E, graças ao Garbage Collector, é praticamente impossível matar um Singleton em Java.


Haaa... concordo não...


Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..

Evoluir é preciso

Sempre bom olhar-API
BrunoCarlo
Virtual Machine Man

Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline

Jedi_FeniX wrote:Concordo ficou meio confuso...
O aplicativo funciona desta maneira, o usuário pode inicializar um processo, que no meu caso é esta classe que só pode ser inicializada uma única vez, esta classe fica rodando direto, não para, se o usuário fechar o browser e abrir novamente o aplicativo tem que indicar que a classe ainda está rodando.
O usuário também tem a possibilidade de parar o processo, por isso eu preciso pegar a instância da classe.


Pois é, pra min se isto não é um singleton...

Dá uma olhada no que é este singleton: http://pt.wikipedia.org/wiki/Singleton

Evoluir é preciso

Sempre bom olhar-API
eclipso
JavaEvangelist

Membro desde: 07/12/2006 12:57:04
Mensagens: 446
Offline

Este seu aplicativo seria o que exatamente? Uma thread? Um aplicativo desktop stand-alone? Um aplicativo desktop cliente-servidor?

Você fala dessa classe como se ela fosse algo dissociado do seu aplicativo. Porque diz "quando fechar" e "quando iniciar o aplicativo", e em seguida diz que independente de fechar ou reiniciar o aplicativo a classe deve ficar "rodando"...

Daria pra resolver relativamente fácil adotando a arquitetura cliente-servidor, mas não sei exatamente qual é a natureza da aplicação...

Abraço...

CV: http://lattes.cnpq.br/0044387433155250
eclipso
JavaEvangelist

Membro desde: 07/12/2006 12:57:04
Mensagens: 446
Offline

Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...

CV: http://lattes.cnpq.br/0044387433155250
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..


Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton.
Certa vez, até escrevi um artigo exatamente com esse assunto.

O usuário pode fazer:


E assim por diante...

This message was edited 1 time. Last update was at 15/07/2008 16:47:42


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

eclipso wrote:Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...


Se você levar reflection em conta, tudo pode ser burlado. Não existem padrões.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
BrunoCarlo
Virtual Machine Man

Membro desde: 25/11/2004 10:50:06
Mensagens: 633
Localização: Rio de Janeiro
Offline

ViniGodoy wrote:
BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..


Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton.
Certa vez, até escrevi um artigo exatamente com esse assunto.

O usuário pode fazer:


E assim por diante...


Faz sentido....

ViniGodoy wrote:

eclipso wrote:Singleton em Java é um pepino porque pode sempre ser burlado usando reflection...




Se você levar reflection em conta, tudo pode ser burlado. Não existem padrões.


Tb faz sentido... reflection é uma quebra de padrões terrível.. mas as vezes necessário.

Evoluir é preciso

Sempre bom olhar-API
humberto.lima
Debugger

Membro desde: 18/12/2006 20:16:25
Mensagens: 58
Offline

Parece que a pergunta foi esquecida...

Mas retomando, pelo que entendi o que voce que é guardar algum objeto scopo "application", nao seria isso?

[]´s

Humberto
fredferrao
GUJ Master
[Avatar]

Membro desde: 01/06/2005 13:23:32
Mensagens: 1901
Localização: Brasil
Offline

ViniGodoy wrote:
BrunoCarlo wrote:Se vc usar um analisador de memoria vera que esta classe saira quando se chamar o killMyself dela. e depois do GC..


Negativo. Esse é um bom exemplo de como se pode quebrar o padrão Singleton.
Certa vez, até escrevi um artigo exatamente com esse assunto.

O usuário pode fazer:


E assim por diante...


Blz entao apague o metodo killMySelf, que resolve o problema.

Não respondo dúvidas via MP!
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

fredferrao wrote:Blz entao apague o metodo killMySelf, que resolve o problema.


Sim, e não se apaga mais o Singleton...
como eu falei desde o início.

Você só consegue apagar o Singleton usando a classe WeakReference. Assim você consegue garantir que não há referências fortes externamente, como a que eu fiz ali.
Mas ainda assim, com Singleton ou sem Singleton, é praticamente impossível "matar" uma instância.

This message was edited 1 time. Last update was at 15/07/2008 18:16:32


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team