Chamadas à Fachada interceptadas por Proxy

Olá, pessoal :slight_smile:

eu tenho uma fachada e preciso interceptar as chamadas à mesma para uma regra de negocio.

Aí lembrei do InvocationHandler. Gostaria de saber se é viável a implementação de um para interceptar estas chamadas, e como eu faria para “associar” à minha fachada(construtor) a classe que implementaria o invocation.

Gostaria de saber também, se eu tenho que necessáriamente ter uma interface que extenda InvocationHandler (e.g: IFachadaProxy), para depois ter uma outra classe que implemente essa interface(e.g: FachadaProxy) que irá sobrescrever o método invoke.

Obrigada.

[]'s

Helaine Lins

Se vc estiver usando um servidor de aplicação com suporte a AOP como Jboss, isso fica bastante fácil. No caso do Jboss, uma das opções é especificar o arquivo ejb-jar.xml. Segue um exemplo:

<ejb-jar>
   <assembly-descriptor>
      <interceptor-binding>
         <ejb-name>*</ejb-name>
         <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
      </interceptor-binding>
   </assembly-descriptor>
</ejb-jar>

Helaine porque essa regra de negocio esta fora da fachada?

Eu acho viavel usar o InvocationHandler quando uma mesma regra é aplicada a todos os metodos da sua fachada, se não for aplicavel a todos os metodos voce vai ter que checar os metodos que estao sendo chamado para aplicar uma determinada regra e isso vai acabar com a orientação a objeto do seu código.

Eu estou usando o InvocationHandler para verificação de autorização o que é igual para todos os metodos dos objetos.

Caso vc queira usar vc deve ter:

Uma interface para sua fachada;
Sua fachada implementando essa interface;
Um objeto Implementado InvocationHandler para fazer seu filtro;
Criar o proxy usando o filtro;
E usar sua fachada através da interface.

[Editado]
Derrepente esse post ajude em algo

http://www.guj.com.br/posts/list/38911.java#207949
[/Editado]

Qualquer coisa amanha estou por aii

[]s

Além do post indicado pelo Bruno, este link também poderá ajudar.
http://www-128.ibm.com/developerworks/java/library/j-dynproxies.html :wink:

[quote=Thiago Senna]Além do post indicado pelo Bruno, este link também poderá ajudar.
http://www-128.ibm.com/developerworks/java/library/j-dynproxies.html ;)[/quote]

Caramba bacana o artigo Thiago, dale IBM sempre com umas paradinhas bacanas já li sobre generic dao lá e tbem é muito bacana!

Em particular este foi muito legal pois eu ainda não tinha o visto e apesar dele ser bem antiguinho e ter sido tachado com o nivel introdutorio, é bacana ver que eu implementei uma visão que outras pessoas também acham legal!

Vou guada-lo na minha caixinha de provas para minhas teorias! Já que eu não tenho muita credibilidade heheeheh…

Para um programador enferrujado como eu isso serve até com estimulo.

[]s

Olá Bruno,

o interessante é que eu primeiro aprendi sobre o proxy com o post que você tinha feito, e só depois descobri o artigo. Descobri sem querer no google enquanto pesquisava sobre validação e proxy. Eu também achei a solução do artigo muito similar a sua, e desde então guardo o link com muito carinho, hehe!

Abraços
Thiago