dúvidas sobre o Session facade j2ee pattern

Boa tarde,
Estou com algumas dúvidas em relação ao session facade.

eu vou passar um exemplo deaplicação bem simples e gostaria que alguem
me ajudasse a implementar o session facade neste exmplo:

Aplicacao Cadastro de cliente:

[code]class Cliente implements implements Serializable{

private String nome;
private String endereco

//contrutor vazio

//getter e setter
}
[/b]

class ClienteDAO{
//alguns atributos
insert(){…}
delete(){…}
update(){…}
select(){…}

}

//para alguns programadores e desenvolvedores, esta camada nao é muito bem aceita,mais estou colocando apenas para exemplo.

[b]class ClienteBO{
//alguns atributos
insertCliente(){//algumas regras de negocio e chama o dao }

deleteCliente(){//algumas regras de negocio e chama o dao }

updateCliente(){//algumas regras de negocio e chama o dao }

selectCliente(){//algumas regras de negocio e chama o dao }

}[/code]

Agora, eu gostaria que alguem implementasse a session facade como está na documetação da sun(usando as duas interfaces Home e Remote e o objeto SessionBean) apenas para esclarecimeto (e tenho certeza que muitas pessoas também vão esclerecer algumas de suas dúvidas) E A CHAMADA DO CLIENTE(podendo ser o business delegate) A SESSION FACADE USANDO SERVICE LOCATOR

exemplo delegate chamando session facade utilizado o service locator

Tenho certeza de que está dúvida irá nao só ajudar a mim, mais a muitas pessoas!!

Obrigado a todos!!!

Façade é um padrão que abstrai um subsistema. Imagine que para criar um usuário eu tenho que chamar vários métodos. Eu poderia deixar que, digamos, o Servlet que recebe a requisição fizesse isso (vamos esquecer camadas para simplificar):

public void doPost(...){

 Usuario u = new UIsuario(login);
 sistemaNotificador.notificarAdministradorDaCriacaoDeusuario(usuario);
 repositorio.salvar(usuario);
}

Mas aí toda vez que eu tiver que criar um usuário eu preciso repetir estas 3 linhas exatamente iguais, e muito piro: quando estas linhas mudarem (de ordem, de comportamento, tirar uma, colocar outra, etc.) eu tenho que alterar em todos os lugares. Este foi um exemplo bem simplório, imagine uma lógica de criação com ifs e iterações, por exemplo.

Para evitar isso podemos encapsular estes passos em um objeto e fazer o servlet apenas invocá-lo:


class Façade{

 public void criarUsuario(...){
  Usuario u = new UIsuario(login);
  sistemaNotificador.notificarAdministradorDaCriacaoDeusuario(usuario);
  repositorio.salvar(usuario);
 }
}

class XYZServlet{

 public void doPost(...){

  façade.criarUsuario(usuario);
 }
}

O [url=http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html]Session Façade{/url] é apenas este mesmo princípio aplicado quando o Façade é um Session bean.

A única vantagem ao utilizar um EJB são as providas por esta paltaforma (transações, acessor emoto, etc.), mas geralmente eu recomendo que se crie uma Façade POJO (objetos simples, não EJBs) e que a Façade EJB apenas delegue para esta.

Obrigado Pela ajuda!!!