package org.jacorb.test.orbreinvoke.tao_imr; import java.util.Properties; import java.io.*; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import org.jacorb.orb.util.*; import org.jacorb.util.ObjectUtil; import org.omg.CORBA.BAD_PARAM; import org.omg.CORBA.ORB; import org.omg.CORBA.Policy; import org.omg.PortableServer.IdAssignmentPolicyValue; import org.omg.PortableServer.LifespanPolicyValue; import org.omg.PortableServer.POA; import org.omg.PortableServer.POAHelper; import org.omg.PortableServer.Servant; import org.omg.PortableServer.ImplicitActivationPolicyValue; import org.jacorb.test.listenendpoints.echo_corbaloc.*; public class TwoPoaServer { public static void main(String[] args) { try { MyCmdArgs cmdArgs = new MyCmdArgs("Server", args); boolean cmdArgsStatus = cmdArgs.processArgs(); // translate any properties set on the commandline but after the // class name to a properties java.util.Properties props = ObjectUtil.argsToProps(args); String implName = props.getProperty("jacorb.implname", "EchoServerX"); if (implName.equals("EchoServerX")) { props.setProperty("jacorb.implname", implName); } System.out.println("Server: jacorb.implname: <" + implName + ">"); String poaBaseName = cmdArgs.getPoaBaseName(); if (poaBaseName == null) { poaBaseName = "EchoServer"; } System.out.println("Server: poaBaseName: <" + poaBaseName + ">"); String objectId = poaBaseName + "-ID"; String poaName = poaBaseName + "-POA"; //init ORB ORB orb = ORB.init(args, props); //init POA POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); //init new POA Policy[] policies = new Policy[2]; policies[0] = rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT); policies[1] = rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID); for (int i=0; i<policies.length; i++) { policies[i].destroy(); } POA parent_poa = rootPOA.create_POA (poaBaseName + "-Parent-POA", rootPOA.the_POAManager(), policies); POA child_poa1 = parent_poa.create_POA (poaBaseName + "-POA1", parent_poa.the_POAManager(), policies); POA child_poa2 = parent_poa.create_POA (poaBaseName + "-POA2", parent_poa.the_POAManager(), policies); parent_poa.the_POAManager().activate(); child_poa1.the_POAManager().activate(); child_poa2.the_POAManager().activate(); // create servant object String child_id1 = poaBaseName + "-ID1"; String child_id2 = poaBaseName + "-ID2"; EchoMessageImpl echoServant1 = new EchoMessageImpl(implName + "." + poaBaseName + "." + child_id1); EchoMessageImpl echoServant2 = new EchoMessageImpl(implName + "." + poaBaseName + "." + child_id2); System.out.println("MAIN 1: child_poa1.activate_object_with_id(child_id1.getBytes(), echoServant1)"); child_poa1.activate_object_with_id(child_id1.getBytes(), echoServant1); System.out.println("MAIN 2: child_ref1 = child_poa1.servant_to_reference(echoServant1)"); final org.omg.CORBA.Object child_ref1 = child_poa1.servant_to_reference(echoServant1); System.out.println("MAIN 3: String child_ior1 = orb.object_to_string(child_ref1)"); String child_ior1 = orb.object_to_string(child_ref1); System.out.println("MAIN: returning from orb.object_to_string(child_ref1)"); System.out.println("MAIN 4: child_poa2.activate_object_with_id(child_id2.getBytes(), echoServant2)"); child_poa2.activate_object_with_id(child_id2.getBytes(), echoServant2); System.out.println("MAIN 5: child_ref2 = child_poa2.servant_to_reference(echoServant2)"); final org.omg.CORBA.Object child_ref2 = child_poa2.servant_to_reference(echoServant2); System.out.println("MAIN 6: String child_ior2 = orb.object_to_string(child_ref2)"); String child_ior2 = orb.object_to_string(child_ref2); System.out.println("MAIN 7: returning from orb.object_to_string(child_ref2)"); System.out.println("SERVER IOR: " + child_ior1); System.out.println("SERVER IOR: " + child_ior2); System.out.flush(); if (cmdArgs.getIORFile() != null) { PrintWriter ps = new PrintWriter(new FileOutputStream( new File( cmdArgs.getIORFile() + ".child1"))); ps.println(child_ior1); ps.close(); ps = new PrintWriter(new FileOutputStream( new File( cmdArgs.getIORFile() + ".child2"))); ps.println(child_ior2); ps.close(); } // wait for requests orb.run(); } catch (Exception e) { e.printStackTrace(); } } }