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

Re: [reverbel-sma] duvida



Opa, Ivan, td bem?
Eu ainda fiquei em dÃvida. O cliente recebe o proxy dinÃmico(serializado) que à fabricado pelo proxy factory.Mas como ocorre o vÃnculo do proxy dinÃmico com o stub gerado a partir do idl (eu preciso desse stub, pois estou usando IIOP e nÃo java rmi, em que o stub à passado serializado).
 
Obrigado,
Rodrigo


 
On 10/12/06, Ivan Neto wrote:
Olà Rodrigo.

On 10/12/06, Rodrigo Ferro wrote:
> 1-O cliente acessarà o servidor usando java RMI + IIOP ou sà via IIOP?
No caso desse trabalho acredito que a comunicaÄÃo serà feita "apenas"
atravÃs de IIOP.

> Estou perguntando isso, pois em relaÃÃo ao stub, eu deveria considerar que o
> cliente jà possui um stub estÃtico ou deveria ser passado junto com o proxy
> de forma serializada.
> A dÃvida surgiu pois no IIOPInvoker (do jboss), Ã usado um stub dinÃmico
> IIOP(usa o stub de rmi.corba).Se nÃo tiver que passar o stub, sà passo mesmo
> entÃo a IOR?
NÃo sei se entendi muito bem, mas vou tentar responder (se eu nÃo
responder a sua dÃvida por favor me avise). Os stubs utilizados pelos
clientes sÃo produzidos por uma proxy factory
(org.jboss.proxy.ejb.ProxyFactory ), e sÃo baseados em proxies
dinÃmicos. Tais stubs, apÃs fazerem a requisicÃo passar por uma cadeia
de interceptadores, passam tal requisicÃo para um invoker proxy, o
qual repassa a requisicÃo para o lado servidor atravÃs de algum
protocolo (no caso do EP o IIOP).

Desse modo, como a classe org.jboss.proxy.ejb.ProxyFactory jà cria os
stubs para os clientes, vocà nÃo precisa se preocupar em "fabricar"
tais stubs. Vocà precisa apenas dizer a essa fÃbrica para ela "grudar"
o seu invoker proxy nos stubs. Isso à feito atravÃs de um
<invoker-proxy-binding>. Com relacÃo ao seu invoker proxy, tudo o que
ele precisa para passar a requisicÃo para o servidor atravÃs do
protocolo IIOP Ã uma IOR (a IOR do servente que vai receber tais
requisicÃes do lado servidor).

> 2-Em relaÃÃo à propagaÃÃo de contexto, segundo email anterior, eu tenho que
> usar o MarshalledInvocation que recebe um invocation no construtor.Como o
> mÃtodo invoke da interface Invoker(definida em idl) recebe um byte[]
> invocation, eu tenho que converter o array para object, fazer um cast
> invocation e setar a propagaÃÃo de contexto antes de enviar de novo em forma
> de um array de bytes para o server?
Vocà vai precisar converter o byte array para um objeto do lado
servidor. Do lado cliente (invoker proxy) vocà cria o
MarshalledInvocation, define o contexto transacional, faz outras
coisas se quiser, e daà na hora de enviar vocà transforma esse
MarshalledInvocation num byte array. Do lado servidor ocorre o
contrÃrio: vocà recebe um byte array, tranforma num
MarshalledInvocation, despacha a requisicÃo, pega a resposta,
transforma num byte array e a envia para o cliente. Para fazer as
tranformacÃes objetos <-> byte array, vocà pode utilizar as classes
ObjectInputStream/ObjectOutputStream.

> Grato,
> Rodrigo.
Qualquer dÃvida volte a escrever.

--
Ivan Neto