[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
RES: Duvida de Java - interfaces
- Subject: RES: Duvida de Java - interfaces
- From: "Roberto Pires de Carvalho" <PROTECTED>
- Date: Mon, 1 Apr 2002 14:24:39 -0300
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.
>
>
>
>