package org.jacorb.demo.miop; import java.io.BufferedReader; import java.io.FileReader; import java.util.Properties; import org.omg.CORBA.INV_OBJREF; /** * This is a simple MIOP based client that will multicast out a method * call to a group. It uses a default MIOP corbaloc URL of * "corbaloc:miop:1.0@1.0-TestDomain-1/224.1.239.2:1234" * which is read from an IOR file named 'miop.ior' * * Parameters: * -fragment This will cause the client to send an extra large message to induce fragmentation. * -ior [IOR/Corbaloc] optional parameter to read the IOR or corbaloc from, rather than from miop.ior * * @author <a href="mailto:Nick.Cross@prismtech.com"></a> * @version 1.0 */ public class Client { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { String iorFile = "miop.ior"; 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"); String defaultParam = "Oneway call"; String groupURL = null; for (int j=0 ; j<args.length; j++) { if(args[j].equals ("-fragment")) { StringBuilder sb = new StringBuilder (defaultParam); sb.append ("___"); for (int i=0; i<1000; i++) { sb.append ("abcd"); } defaultParam = sb.toString (); } else if (args[j].equals ("-ior")) { if (args.length < ++j) { System.err.println ("Insufficient parameters - missing ior URL"); System.exit (-1); } groupURL = args[j]; } else if (j == 0) { // Hidden option - override default IOR file of miop.ior with args[0] // for demo xml automated running. iorFile = args[0]; } } if (groupURL == null) { BufferedReader reader = new BufferedReader (new FileReader(iorFile)); groupURL = reader.readLine(); reader.close(); } org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,props); // Use an unchecked narrow so it doesn't do an is_a call remotely. GreetingService helloGroup = GreetingServiceHelper.unchecked_narrow(orb.string_to_object(groupURL)); System.out.println("Sending a string of length " + defaultParam.length ()); helloGroup.greeting_oneway(defaultParam); // A normal narrow should do a remote call. This will need the group IIOP profile which // may not have been transmitted so we do this part last. try { helloGroup = GreetingServiceHelper.narrow(orb.string_to_object(groupURL)); } catch (INV_OBJREF e) { System.err.println ("Unable to narrow due to no Group IIOP Profile"); } helloGroup.shutdown (); } }