package org.jacorb.test.bugs.bug1013; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import org.jacorb.test.harness.TestUtils; import org.jacorb.test.listenendpoints.echo_corbaloc.CmdArgs; import org.jacorb.test.listenendpoints.echo_corbaloc.EchoMessageImpl; import org.jacorb.util.ObjectUtil; 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; public class Bug1013TestServer { public static void main(String[] args) { try { CmdArgs cmdArgs = new CmdArgs("Server", args); 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", "other"); String objectId = implName + "-ID"; TestUtils.getLogger().debug("Server: jacorb.implname: <" + implName + ">"); //init ORB ORB orb = ORB.init(args, props); //init POA POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); poa.the_POAManager().activate(); EchoMessageImpl echoServant = new EchoMessageImpl(implName + "." + objectId); if (implName.equals("EchoServer")) { String poaName = "EchoServer-POA"; //init new POA Policy[] policies = new Policy[2]; policies[0] = poa.create_lifespan_policy(LifespanPolicyValue.PERSISTENT); policies[1] = poa.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID); poa = poa.create_POA(poaName, poa.the_POAManager(), policies); for (int i = 0; i < policies.length; i++) { policies[i].destroy(); } poa.activate_object_with_id(objectId.getBytes(), echoServant); } else { poa.activate_object(echoServant); } String ior = orb.object_to_string(poa.servant_to_reference(echoServant)); System.out.println("SERVER IOR: " + ior); System.out.flush(); if (cmdArgs.getIORFile() != null) { PrintWriter ps = new PrintWriter(new FileOutputStream( new File( cmdArgs.getIORFile()))); ps.println(ior); ps.close(); } // wait for requests orb.run(); } catch (Exception e) { } } }