[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RES: Duvida de Java - interfaces



Olá,
 
Conforme meus testes, vc pode chamar o método _this sem precisar dar bind. Para isso eu uso o objeto._this(orb). Não testei sem passar o orb, pois já que funcionou com ele não mexi mais.
 
T+

	-----Mensagem original----- 
	De: Paulo Eduardo Azevedo Silveira [mailto:PROTECTED] 
	Enviada: sáb 30-mar-02 18:32 
	Para: Rodrigo Mendes Leme 
	Cc: PROTECTED 
	Assunto: Re: Duvida de Java - interfaces
	
	

	ola rodrigo
	
	> this.sessao.manda_mensagem((Mensagem) new MensagemImpl(entrada_msg,
	> destinatario_msg, this.nome));
	
	esse eh exatamente o seu problema, pois Mensagem Impl nao extends
	Mensagem (MensagemImplObj instanceof MensagemObj retorna FALSE). Voce
	precisa fazer o seguinte:
	
	MensagemImpl msg = new MensagemImpl (entrada_msg, destinatario_msg,
	this.nome);
	
	this.sessao.manda_mensagem(msg._this());
	
	O metodo ._this() de uma implementacao  (q extends
	Servant), retorna a referencia CORBA do objeto real. Outro detalhe, esse
	operador ._this() soh pode ser chamado DEPOIS de voce ter registrado o
	bojeto no servidor, faz sentido certo? pois senao voce nao tem a
	referenciua corba, ja que ele nao esta no servidor. Entao antes vc tem de
	dar um BIND na mensagem.
	
	O codigo ficaria assim
	
	MensagemImpl msg = new MensagemImpl (entrada_msg, destinatario_msg,
	this.nome);
	
	nc.bind(nc....("referencia", msg));
	
	this.sessao.manda_mensagem(msg._this());
	
	Se voce nao der o bind antes, isso eh, se voce nao fizer com que o
	servidor sirva esse servant, na hora de voce chamar o ._this(), vai dar
	pau, ja que ele vai procurar sua propria referencia no servidor e nao vai
	encontrar.
	
	Paulo
	
	
	
	
	>
	>    Essa linha gera um erro em tempo de execucao, ClassCastException
	>    O que ocorre eh que, por um lado, manda_mensagem espera uma
	> interface; por outro lado, preciso instanciar um objeto da classe
	> MensagemImpl, pois nele estao as informacoes necessarias a
	> manda_mensagem.
	>    Eu tentei resolver o problema usando o cast (Mensagem), mas isso acabou
	> resultando no erro no erro citado acima.
	>    Gostaria de pedir sugestoes para resolver esse problema.
	>
	> Obrigado,
	> Rodrigo
	>
	> P.S.: estou aprendendo Java concomitantemente ao curso (em POO aprendi
	> Smalltalk), por isso estou patinando um pouco em alguns conceitos da
	> linguagem.
	>
	>
	>
	>