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

Re: Dificuldades com Ref. Persistentes.



Pessoal,

Leiam todos por favor, que isto é importante para o EP!

Se você não estiver usando o repositório de implementações, tem mais
uma coisa que você precisa fazer no JacORB para que uma referência seja 
persistente *mesmo*: fixar o port na qual o ORB aguarda requisições 
(esse é o port que será incluído nas IORs criadas pelo servidor). 

Chame o seu servidor com "-DOAPort=NNNN" (onde NNNN é um port livre) na 
linha de comando. Outra possibilidade é passar o OAPort no segundo 
argumento para o ORBInit:

    Properties p = new Properties();
    p.put("OAPort", "6789"); // algum port livre
    ORB orb = ORB.init(args, p);
 
O port especificado será colocado nas IORs geradas pelo servidor.
Caso você derruber o servidor e o levante de novo, ele voltará a usar
o mesmo port.

Bom trabalho,

Reverbel

On Fri, 25 Apr 2003, Edgar Szilagyi wrote:

> Olá Pessoal!
> 	Estou tendo dificuldades em fazer minhas referencias CORBA de
> fato serem persistentes. O que ocorre:
> -Com o servidor escrito em java, e o servidor de nomes do mico, crio um
> POA com as políticas USER_ID, e
> PERSISTENT. Estou me baseando no exemplo test/POA/local do JacORB.Registro um servente nesse POA.
> 
> -Ponho pra rodar o servidor.
> 
> -Com o cliente obtenho uma referencia para esse objeto.
> 
> -Derrubo o servidor e o recoloco pra rodar.
> 
> ->A referencia que o cliente tinha não vale mais. Olhando mais detalhes, através do nsadmin, a IOR do novo objeto é
> diferente da anterior, não deveria ser a mesma? Existe alguma opção para
> o micod para permitir o registro de objetos persistentes. Alguém tem
> alguma sugestão sobre o o que está acontecendo ou como resolver o
> problema?
> 
> Exemplo do Jacorb:
> ==================
> 
> package test.POA.local;
> 
> import org.omg.CORBA.ORB;
> import org.omg.PortableServer.*;
> import org.omg.CosNaming.*;
> import java.io.*;
> 
> public class Server
> {
>     public static String factoryPOAName = "factoryPOA";
>     public static String fooPOAName = "fooPOA";
>     public static String description;
> 
>     public static void main(String[] args)
>     {
>         try
>         {
>             ORB orb
>                 = org.omg.CORBA.ORB.init(args, null);
>             POA rootPOA =
> 
> POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
>             POAManager poaMgr  = rootPOA.the_POAManager();
> 
>             // create a user defined poa for the foo factory
>             org.omg.CORBA.Policy [] policies = {
> 
> rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
> 
> rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT)
>             };
> 
>             POA factoryPOA =
>                 rootPOA.create_POA(factoryPOAName, poaMgr, policies);
> 
>             for (int i=0; i<policies.length; i++)
>                 policies[i].destroy();
> 
>             // implicit activation of an adpater activator on root poa
>             //factoryPOA.the_activator(new
> FooAdapterActivatorImpl()._this(orb));
> 
> // explicit activation of the factory servant on factory poa
>             FooFactoryImpl factoryServant = new FooFactoryImpl(
> factoryPOA );
> 
>             factoryPOA.activate_object_with_id(new
> String("FooFactory").getBytes(), factoryServant);
> 
> 
>             org.omg.CORBA.Policy [] foo_policies = {
> 
> factoryPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
> 
> factoryPOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
> 
> factoryPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
> 
> factoryPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT)
>             };
> 
>             POA newPOA =
>                 factoryPOA.create_POA( fooPOAName,
>                                        factoryPOA.the_POAManager(),
>                                        foo_policies);
> 
>             for (int i=0; i < foo_policies.length; i++)
>                 foo_policies[i].destroy();
> 
>             newPOA.set_servant_manager( new
> FooServantLocatorImpl()._this( orb ));
> 
> 
>             // register factory on name service
>             NamingContextExt nc =
> 
> NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
> 
> nc.bind( nc.to_name("FooFactory.service") , factoryServant._this(orb) );
> 
>             // activate the poa manager
>             poaMgr.activate();
>             System.out.println("[ Server ready ]");
>             orb.run();
> 
>         }
>         catch (Exception e)
>         {
>             e.printStackTrace();
>         }
>     }
> }
> 
> 
>