Eduardo,

Se voc� der uma boa olhada no artigo que o Paulo mandou:
http://developer.java.sun.com/developer/restricted/patterns/ServiceLocator.h
tml

vai perceber que n�o existe tal coisa do tipo GenericoServiceHome.class, e
na chamada do m�todo narrow � usada a pr�pria classe para a qual queremos
obter a refer�ncia. Quando h� a necessidade de mais um tipo de servi�o �
preciso atualizar o arquivo do ServiceLocator e recompil�-lo. Alem disso, ao
fazer uso desse service locator deve-se fazer um cast para a classe correta
visto que o tipo de retorno � simplesmente EJBHome.

A principal diferen�a dessa estrat�gia para a que � usada no PetStore:
http://java.sun.com/blueprints/code/jps11/src/com/sun/j2ee/blueprints/petsto
re/util/EJBUtil.java.html

� que nesse caso existe um m�todo getXXXHome para cada servi�o enquanto que
no outro existe apenas um m�todo getHome (mais o cast associado).

Note que em ambos os exemplos, como est� descrito no artigo, poderia ser
mantida uma refer�ncia para o InitialContext para que n�o fosse necess�rio
criar um a cada chamada ao getHome ou getXXXXHome...

� claro tamb�m que todo esse mecanismo poderia ser automatizado se o seu
Class.forName estivesse funcionando, pois ai poder�amos ler os nomes e as
classes dos objetos de um arquivo de configura��o ou de um "environment
entry".

Constantino.



        -----Original Message-----
        From:   Constantino Jose R. Cronemberger 
        Sent:   Friday, February 08, 2002 5:31 PM
        To:     '[EMAIL PROTECTED]'
        Subject:        RE: EJB - narrow din�mico

        Eduardo,

        A resposta exata para o seu problema mas tenha algumas pistas.
        Eu fa�o id�ia do que voc� quer fazer: voc� esta cansado de chamar
esse m�todo e que fazer uma chamada mais simples para n�o ter que ficar
escrevendo aquilo tudo.
        Ok, encontrei o seguinte exemplo da Sun e me parece que a id�ia
deles foi colocar todas aquelas chamadas numa �nica classe de utilidades, o
que n�o resolve o seu problema diretamente pois voc� ainda tem que criar
esse arquivo, mas pelo menos voc� digita apenas uma chamada para cada
classe.
(http://java.sun.com/blueprints/code/jps11/src/com/sun/j2ee/blueprints/petst
ore/util/EJBUtil.java.html)

        O esquema de se ter um GenericoServiceHome eu n�o acho que v� dar
certo visto que voc� pode dar o narrow para essa classe, mas voc� sabe o que
acontece se voc� posteriormente der um cast dessa classe para uma outra?
Ser� que funciona? N�o sei exatamente como funciona esse narrow, por isso
n�o posso afirmar, mas � uma suspeita.

        Finalmente como voc� esta querendo chamar o Class.forName eu imagino
que voc� tenha uma tabela mapeando os servi�os para os respectivos nomes das
classes. Por que ent�o em vez de colocar o nome, voc� n�o coloca a pr�pria
classe. Tente rodar um teste com esse forName fora do servidor para ver se
n�o � o caso do servidor estar substituindo o ClassLoader... 

        Constantino.


> -----Original Message-----
> From: Paulo Ferreira de Moura Junior [SMTP:[EMAIL PROTECTED]]
> Sent: Friday, February 15, 2002 1:59 PM
> To:   [EMAIL PROTECTED]
> Subject:      Re: [enterprise-list] EJB - narrow din�mico
> 
>       ----- Original Message ----- 
>       From: Eduardo Fabricio Elias <mailto:[EMAIL PROTECTED]> 
>       Subject: [enterprise-list] EJB - narrow din�mico
> 
> 
> 
>       Gente, 
> 
>       Estou precisando fazer que o c�digo abaixo fique mais din�mico: 
>       EntidadeServiceHome entidadeServiceHome = (EntidadeServiceHome)
> PortableRemoteObject.narrow( 
>       
> ServiceLocator.getInstance().getService("EntidadeService"),
> EntidadeServiceHome.class);
> 
>       Gostaria de fazer algo do tipo: 
>       GenericoServiceHome serviceHome = (GenericoServiceHome)
> PortableRemoteObject.narrow( 
>       
> ServiceLocator.getInstance().getService(service),
> GenericoServiceHome.class); 
> 
>       Minha id�ia � utilizar um m�todo gen�rico para fazer narrow de todos
> meus EJB�s... 
> 
>       Meu primeiro problema � com o segundo parametro do narrow, pois
> tentei utilizar Class.forName, mas ele n�o encontra a classe, n�o sei que
> porque est� em outro JAR, mas acho que deveria encontrar...
> 
> Oi,
>  
> para resolver isso, olhe a descri��o do pattern do Service Locator contida
> no livro Core J2EE Patterns:
>  
> http://www.amazon.com/exec/obidos/ASIN/0130648841/qid%3D1013785886/ref%3Ds
> r%5F11%5F0%5F1/103-5898549-9894241
> <http://www.amazon.com/exec/obidos/ASIN/0130648841/qid=1013785886/ref=sr_1
> 1_0_1/103-5898549-9894241>
>  
> Se voc� (ainda) n�o tiver o livro, compre. :^) Enquanto ele n�o chega,
> olhe no seguinte endere�o:
>  
> <http://developer.java.sun.com/developer/restricted/patterns/ServiceLocato
> r.html>
>  
> E aqui vai uma melhoria feita na implementa��o original:
>  
> <http://swjscmail1.java.sun.com/cgi-bin/wa?A2=ind0107&L=j2eepatterns-inter
> est&P=R4173>
>  
> At� +.
> 
> --------------------------------------
>  
> Paulo Ferreira de Moura Junior
> e-mail: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> 

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

Responder a