// with the ORB
poa_Servant tester = new poa_Servant();
POA rootPOA =
POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
Object object = rootPOA.servant_to_reference(tester);
// IOR must contain custom fragment, inserted by interceptor.
// Sun 1.4 had a bug that was fixed in 1.5.
String ior = orb.object_to_string(object);
assertTrue("IOR custom component (bug in 1.4, fixed in 1.5)",
ior.indexOf(
"45257200000020000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"
) > 0
);
// Create the forwarding target and register it
// with the ORB
poa_Servant forw = new poa_Servant();
tester.theField(15);
forw.theField(16);
// Another orb without interceptors.
final ORB orbf = ORB.init(new String[ 0 ], null);
POA rootPOA2 =
POAHelper.narrow(orbf.resolve_initial_references("RootPOA"));
Object fobject = rootPOA2.servant_to_reference(forw);
// Storing the IOR reference for general communication.
fior = fobject;
rootPOA.the_POAManager().activate();
rootPOA2.the_POAManager().activate();
// Intercepting server ready and waiting ...
new Thread()
{
public void run()
{
// wait for invocations from clients
orb.run();
}
}.start();
new Thread()
{
public void run()
{
// wait for invocations from clients
orbf.run();
}
}.start();
// Make pause and do a local call.
Thread.sleep(1000);
// Saying local hello.
poa_comTester Tester = poa_comTesterHelper.narrow(object);
Any a0 = orb.create_any();
a0.insert_string("Initial value for slot 0");
Any a1 = orb.create_any();
a1.insert_string("Initial value for slot 1");
ORB orb2 = ORB.init(new String[ 0 ], initialisers);
try
{
// Set the initial slot values.
Current current =
CurrentHelper.narrow(orb.resolve_initial_references("PICurrent"));
Current current2 =
CurrentHelper.narrow(orb2.resolve_initial_references("PICurrent"));
current.set_slot(ucInitialiser.slot_0, a0);
current.set_slot(ucInitialiser.slot_1, a1);
current2.set_slot(ucInitialiser.slot_0, a0);
current2.set_slot(ucInitialiser.slot_1, a1);
}
catch (Exception e)
{
fail("Exception " + e + " while setting slots.");
e.printStackTrace();
}
String lHello = Tester.sayHello();
// Saying remote hello.
Object object2 = orb2.string_to_object(ior);
poa_comTester Tester2 = poa_comTesterHelper.narrow(object2);
String hello = Tester2.sayHello();