[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Dificuldades com Ref. Persistentes.
- Subject: Re: Dificuldades com Ref. Persistentes.
- From: Francisco Reverbel <reverbel@xxxxxxxxxx>
- Date: Fri, 25 Apr 2003 19:03:49 -0300 (EST)
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();
> }
> }
> }
>
>
>