package test.interop.miop_tao_interop; import java.io.*; import java.util.Properties; import org.omg.CORBA.ORB; import org.omg.PortableServer.POA; import org.omg.PortableServer.POAHelper; import org.omg.PortableGroup.GOA; import org.omg.PortableGroup.GOAHelper; public class Server implements Runnable { private ORB orb; public Server (ORB orb) { this.orb = orb; } public void run() { orb.run(); } private static String uipmc_url = "corbaloc:miop:1.0@1.0-test-1/225.1.1.8:321581"; private static String ior_output_file = "test.ior"; private static int orb_threads = 10; private static int payload_length = 1000; private static int client_threads = 5; private static int payload_calls = 100; private static boolean parse_args(String[] args) { for (int i = 0; i < args.length; ++i) { if (args[i].equals("-o")) ior_output_file = args[++i]; else if (args[i].equals("-u")) uipmc_url = args[++i]; else if (args[i].equals("-s")) orb_threads = Integer.parseInt(args[++i]); else if (args[i].equals("-p")) payload_length = Integer.parseInt(args[++i]); else if (args[i].equals("-t")) client_threads = Integer.parseInt(args[++i]); else if (args[i].equals("-c")) payload_calls = Integer.parseInt(args[++i]); else { System.err.println("usage: Test.Server -o <iorfile> -u <uipmc_url> -s <orb_threads> -p <payload_length> -t <client_threads> -c <payload_calls>"); return false; } } return true; } public static void main(String[] args) throws Exception { Properties props = new Properties(); props.setProperty("jacorb.transport.factories", "org.jacorb.orb.iiop.IIOPFactories,org.jacorb.orb.miop.MIOPFactories"); props.setProperty("jacorb.transport.client.selector", "org.jacorb.orb.miop.MIOPProfileSelector"); // init ORB ORB orb = ORB.init(args, props); if (!parse_args(args)) return; // init POA POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); System.out.println("I am here!!! " + poa); GOA goa = GOAHelper.narrow(poa); // create a UIPMC object UIPMCObjectImpl uipmcImpl = new UIPMCObjectImpl(payload_length, client_threads, payload_calls); org.omg.CORBA.Object obj = orb.string_to_object(uipmc_url); byte[] oid = goa.create_id_for_reference(obj); goa.activate_object_with_id(oid, uipmcImpl); UIPMC_Object uipmc_obj = UIPMC_ObjectHelper.unchecked_narrow(obj); System.out.println("MIOP object is <" + orb.object_to_string(obj) + ">"); // create a Hello object HelloImpl helloImpl = new HelloImpl(orb, uipmc_obj); // create the object reference obj = helloImpl._this_object(orb); System.out.println("Activated as <" + orb.object_to_string(obj) + ">"); PrintWriter ps = new PrintWriter(new FileWriter(ior_output_file)); ps.println(orb.object_to_string(obj)); ps.close(); poa.the_POAManager().activate(); Server server = new Server(orb); Thread[] orb_runners = new Thread[orb_threads]; for (int i = 0; i < orb_runners.length; ++i) { orb_runners[i] = new Thread(server); orb_runners[i].start(); } for (int i = 0; i < orb_runners.length; ++i) orb_runners[i].join(); uipmcImpl.final_check(); System.out.println(); System.out.println("Server finished successfully."); } }