Olá Alexandre.
On 10/20/06, Alexandre Freire <chegado@xxxxxxxxx> wrote:
> olá,
>
> estou com duas dúvidas:
>
> 1) tenho que me preocupar com ClassLoaders? se sim, por que?
> Em outras palavras, no método invoke eu preciso desse código:
>
> ClassLoader oldCl = TCLAction.UTIL.getContextClassLoader();
> .
> .
> finally {
> TCLAction.UTIL.setContextClassLoader(oldCl);
> }
Esse trecho de código que você mencionou serve para "salvar" o context
classloader, pois parece que algum interceptador define um novo
context classloader depois que a requisição é encaminhada para o MBean
server (tem um comentário "The cl on the thread should be set in
another interceptor"). Não sei se há algum problema se o context
classloader não for restaurado após cada chamada ao MBean server, mas
por via das dúvidas eu deixaria essa chamada aí :-).
> 2) No enunciado consta o seguinte trecho: "Use o método startService()
> para registrar o servente CORBA com um POA persistente ...". POA
> persistente! O que é isso?
Um POA persistente é um POA configurado com a política PERSISTENT.
Isso quer dizer que uma referência CORBA obtida pelo cliente é
persistente, ou seja, se o servidor sofrer uma queda, por exemplo,
após o servidor se levantar novamente o cliente pode continuar fazendo
requisições utilizando a mesma referência CORBA. Se o POA fosse
TRANSIENT (que é o default) e um cliente tentasse fazer uma requisição
após uma queda do servidor, tal cliente receberia uma exceção
OBJECT_NOT_EXIST.
> Estou fazendo o seguinte:
>
> // o rootPOA é um poa persistente ou eu tenho que alterar aquelas
> políticas?
> POA rootPoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
O Root POA não é PERSISTENT. Você terá que criar um novo POA com essa política.
> rootPoa.the_POAManager().activate();
>
> //estou registrando o servente nessa linha?
> rootPoa.servant_to_reference(this)
Se o POA onde você estiver registrando o servente estiver configurado
com a política IMPLICIT_ACTIVATION, acredito que isso é tudo o que
você precisa. Porém, se o POA estiver configurado com a política
NO_IMPLICIT_ACTIVATION, daí você vai precisar chamar activate_object
ou activate_object_with_id, dependendo da política de Id Assignment do
POA.
>
> Valeu!
>
Abraços.
--
Ivan Neto