Design Patterns J2EE - Session Facade
----------------------------------------

Ol� amigos, por raz�es estrat�gicas, ao contr�rio do anunciado, vamos apresentar o design pattern Session Facade na sequ�ncia. Ele
facilitar� a apresenta��o posterior do Business Delegate.

Nome : Session Facade

Outros nomes: n�o achei. Deve ser consenso :-)

Contexto: �s vezes, a realiza��o de um caso de uso envolve a
invoca��o de diversos EJBs.

Problema: O alto �ndice de chamadas remotas traz preju�zos �
performance da aplica��o.

Solu��o: Ocultar a alta interatividade entre EJBs, atrav�s de
interfaces locais, atr�s de um �nico m�todo remoto.

Consequ�ncias:
+ Menos invoca��es remotas
+ Simplifica a interface de servi�os remotos para o cliente, disponibilizando um ponto central para a realiza��o de um caso de uso
+ Desacoplamente entre as camadas de apresenta��o e neg�cio, uma vez
que todas os relacionamentos e depend�ncias entre as entidades envolvidas
na realiza��o do caso de uso ficam transparentes ao cliente.

Estrat�gias: Implementar um session bean stateless com servi�os de
alto n�vel de granularidade

Exemplo:
/**
* Cliente que N�O USA Session Facade
* @author alegomes
*/
class ATM
{
void transferenciaEntreContas(long c1, long c2)
{
//Lookup e find do EJB ContaCorrente de origem
//Lookup e find do EJB ContaCorrente de destino
ejbCCOrigem.sacar(valor);
ejbCCDestino.depositar(valor);
}
}

/**
* Cliente que USA Session Facade
* @author alegomes
*/
class ATM
{
void transferenciaEntreContas(long c1, long c2)
{
//Lookup e find da Session Facade OperacoesBancarias
sf.transferir(c1, c2);
}
}

/**
* Session Facade
* @author alegomes
*/
public class OperacoesBancarias implements SessionBean
{
//ejbMetodos

/**
* M�todo �nico que o cliente deve chamar para realizar
* transfer�ncia de fundos entre contas correntes.
*/
public void transferir (long c1, long c2)
{
//Lookup e find do EJB ContaCorrente de origem
//Lookup e find do EJB ContaCorrente de destino
ejbCCOrigem.sacar(valor);
ejbCCDestino.depositar(valor);
}
}

� primeira vista, pela simplicidade do exemplo, talvez se tenha
tido alguma decep��o quanto aos reais benef�cios do uso do pattern. Entretanto, imaginem que no mundo real a transfer�ncia entre contas
n�o � apenas tirar de um lugar e por no outro, mas envolve tamb�m a autentica��o do usu�rio, valida��o das contas (bloqueadas, saldo suficiente), gera��o de logs etc. Quando este volume de passos come�a
a crescer � que efetivamente percebemos o qu�o importante � implementar uma fachada de servi�o de alto n�vel de granularidade a fim de
facilitar o desenvolvimento por parte do cliente, reduzir o acomplamento entre as camadas e diminuir o overhead relativo ao grande n�mero de chamadas remotas que estariam sendo realizadas.

Observa��es: Pessoal, quisera eu detalhar aqui todas as nu�ncias relativas � aplica��o deste e outros design patterns. Infelizmente,
por quest�es de espa�o (e tempo), isto n�o � poss�vel. Considerem estas dicas apenas como catalizadores para o in�cio de um longo processo de aprendizado. Conforme consta abaixo, na assinatura do email, todas as dicas podem ser discutidas no MundoOO. Incentivo tamb�m o uso da enterprise-list, do SouJava, para a resolu��o de d�vidas e obten��o
de maiores detalhes pr�ticos relativos ao tema.

Pr�ximo design pattern J2EE: Business Delegate (agora sim)

Bons patterns !!!

Alexandre Gomes
Sou Jedi, Sou Java!



================================================================================
[dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e �
mais um servi�o da Sociedade de Usu�rios Java - http://www.soujava.org.br
*** SouJava - Fortalecendo a Comunidade Java Brasileira! ***
- Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED]
- Participe de outras listas de discuss�o sobre a linguagem Java.
Saiba mais em http://www.soujava.org.br/lista.htm
--------------------------------------------------------------------------------
- Para assinar este boletim: mailto:dicas-list-subscribe@;soujava.org.br
- Para cancelar sua assinatura: mailto:dicas-list-unsubscribe@;soujava.org.br
- Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br
- Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)


Responder a