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]
