Executar método sem chamá-lo.[Resolvido]  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

Como eu faço para o sistema executar um método sem ele ser implementado. Não sei se fui claro.
Por exemplo, no método doPost(), em uma servlet, eu defino o que vai acontecer quando ele
for "chamado", mas eu nunca o chamo, o servlet container o faz, eu acho. Então como eu faço
para que o mesmo ocorra em um sistema que eu estou desenvolvendo, para que eu só
defina o corpo de um método em algum lugar e o código que eu defini seja executado?

Não é uma necessidade que eu tenha, ainda, mas creio que entender seria bom.

This message was edited 1 time. Last update was at 10/02/2010 13:09:24

Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Como assim sem chama-lo?
Voce quer criar o método e ele ser executado sózinho?

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
Metal Java Full
JavaTeenager
[Avatar]

Membro desde: 09/11/2009 11:42:27
Mensagens: 195
Localização: Fortaleza - CE
Offline

Cara, que coisa mais sem sentido...
Tenta ser mais específico!!

Graduação em Análise de Sistemas - Fortaleza (CE)
Sun Certified Programmer for the Java Platform, Standard Edition 6.0
Visitem meu Blog
"Reduza a Velocidade - Travessia de Modems 2400bps." OS VIGARISTAS - Frases de Informática
[Email] [MSN]
Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

Exatamente como no exemplo que eu citei, usando servlets.
Em nenhum lugar do meu código eu escrevo



Mas ainda assim o que eu defino dentro desse método é executado.
Daí eu gostaria de saber como isso acontece e se eu posso implementar algo semelhante.
ViniGodoy
Moderador
[Avatar]

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

Lá dentro do código do seu servidor, ele faz isso.

@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]
Metal Java Full
JavaTeenager
[Avatar]

Membro desde: 09/11/2009 11:42:27
Mensagens: 195
Localização: Fortaleza - CE
Offline

Exatamente.
Isso não fica visível a nós, apenas ao servidor (Tomcat, por exemplo) ...

Graduação em Análise de Sistemas - Fortaleza (CE)
Sun Certified Programmer for the Java Platform, Standard Edition 6.0
Visitem meu Blog
"Reduza a Velocidade - Travessia de Modems 2400bps." OS VIGARISTAS - Frases de Informática
[Email] [MSN]
Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

Então como eu faço algo parecido?
Por exemplo disponibilizar uma classe em que quem for
usar precise somente definir o corpo do método, e eu executá-lo
em um lugar que a pessoa não precise ter idéia de como ocorra.
É o que eu estava tentando pensar, mas não tive idéia.
ViniGodoy
Moderador
[Avatar]

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

Mas enfim, se você quiser que seu usuário escreva classes, para posteriormente você chamar da sua aplicação, você pode usar a API de reflection.

Assim:

1. Você carrega o .jar do seu usuário através de um ClassLoader;
2. Você usa reflexão para com base num arquivo de configuração (um xml, por exemplo), instanciar a classe do seu usuário;
3. Você obtém o método da classe, também via reflexão, e o invoca.

É assim que o server e a maoria dos plugins trabalham.

This message was edited 1 time. Last update was at 10/02/2010 12:29:52


@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]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Entendi o que você quer fazer. Você não quer escrever o código desde o "main"; você quer escrever um componente que possa ser chamado por um outro programa.

Normalmente o que você faz é o seguinte:

Para cada componente - A classe deve implementar uma determinada interface (recomendado), ou então derivar de uma determinada classe abstrata (o que é o caso de uma servlet, que deriva de HttpServlet). Derivar de uma classe abstrata normalmente não é recomendado porque deixa seu componente muito inflexível.

Para o programa que chama os componentes - Instanciar o componente por nome (Class.forName(), createInstance()) e então chamar os métodos adequados da interface que é implementada por esse componente.

OK?

This message was edited 1 time. Last update was at 10/02/2010 12:31:12

Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

Compreendido.

Acho que ainda está um pouco avançado pra mim, mas
estou dando uma olhada na idéia da interface
e na api reflection.

Obrigado.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team