[Pr�via] [Pr�xima] [Pr�via por assunto] [Pr�xima por assunto]
[�ndice cronol�gico]
[�ndice de assunto]
Dificuldades com Ref. Persistentes.
- Subject: Dificuldades com Ref. Persistentes.
- From: Edgar Szilagyi <edgar@xxxxxxxxxxx>
- Date: Fri, 25 Apr 2003 18:28:33 -0300 (BRT)
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();
}
}
}