Daniel,

As formas mais comuns de implementar cache no service locator são:

1) Com um objetos handle;
2) Com um map fazendo cache;

   A nossa primeira alternativa serializa as interfaces home e remote do seu ejb. Isso 
pode ser encarado como uma desvantagem, dado o custo de serialização de um objeto, mas 
pode oferecer um menor footprint, pois suas refencias estao serializadas, podendo ser 
gravadas em arquivo. Vc tem maior flexibilidade pois pode passar o objeto serializado 
para outros objetos (e.g: atraves de um byte[]), embora eu nao ache isso muito 
aconselhável. Não podemos esquecer que vc tbm pode fazer cache da propria referencia 
remota (EJBObject). É importante observar: As implementações de javax.ejb.Handle e 
javax.ejb.HandleHome podem variar de um container para outro (portabilidade), e no 
caso de Statefull Session Beans vc perde a referencia se der crash no servidor. Ah, e 
o mais importante de tudo... o handle na verdade encapsula a chamada JNDI, portanto 
ele não serve para esse tipo de cache... Ele só é realmente útil quando vc quiser 
guardar (serializada) uma referencia ao EJBObject.

   Analizando a nossa segunda alternativa, vemos um map fazendo cache de interfaces 
home. Eh de facil implementacao, eficiente, nao tem o custo da serialização, é 
portável e não precisa fazer o lookup novamente (somente em caso de crash). Na minha 
opinião, esse é o melhor approach.

   Mas em qq caso, se der crash no servidor vc perde o stub (inclusive da interface 
home... não podemos esquecer que ela tbm é remota). Portanto, se der crash no server 
as tuas referencias se tornam inválidas... Uma boa estratégia é testá-la antes de 
retornar para o cliente e reconectar se ela for inválida... mas isso não funciona em 
todos os servidores.

   Um bom exemplo da segunda alternativa pode ser encontrado no ServiceLocator da 
JavaPetStore (que por sinal eh uma aplicação mal feita). Um exemplo da primeira 
alternativa pode ser encontrado nos exemplos do livro Core Patterns do Sun Java Center.

Bem, desculpe pelo tamanho da mensagem e boa sorte.

Rafael Forte


-----Mensagem original-----
De:     Daniel Cícero Amadei [mailto:[EMAIL PROTECTED]
Enviada:        qua 28/5/2003 08:06
Para:   [EMAIL PROTECTED]
Cc:     
Assunto:        [enterprise-list] ServiceLocator c/ Cache

Senhores,

Alguém conhece um pattern ou possui um exemplo de ServiceLocator que 
armazene EJB's em um cachepara evitar ficar dando lookup toda vez?? Isso é 
possível? e quando o servidor cair, o que acontece com as referências??

No OC4J estou começando a implementar um mas quando cai o servidor e voi dar 
um create em um EJB que está no cache ele dá uma exceção indicando que houve 
um "Server Shutdown".

Grato

[]'s
Daniel C. Amadei
Sun Certified Programmer for the Java 2 Platform 1.2
Sun Certified Programmer for the Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE

_________________________________________________________________
MSN Hotmail, o maior webmail do Brasil.  http://www.hotmail.com


---------------------------------------------------------------------
Para cancelar a subscrição, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]




<<winmail.dat>>

---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a