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

Re: [reverbel-sma] duvida



Olà Rodrigo.

On 10/12/06, Rodrigo Ferro <rodferro@xxxxxxxxx> 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