package test.interop.bidir; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.Properties; import org.omg.BiDirPolicy.BIDIRECTIONAL_POLICY_TYPE; import org.omg.BiDirPolicy.BOTH; import org.omg.BiDirPolicy.BidirectionalPolicyValueHelper; import org.omg.CORBA.Any; import org.omg.CORBA.Policy; import org.omg.PortableServer.IdAssignmentPolicyValue; import org.omg.PortableServer.ImplicitActivationPolicyValue; import org.omg.PortableServer.LifespanPolicyValue; import org.omg.PortableServer.POA; /** * Client.java * * * Created: Mon Sep 3 19:28:34 2001 * * @author Nicolas Noffke */ public class Client extends ClientCallbackPOA { public Client () { } public void hello( String message ) { System.out.println( "Client callback object received hello message >" + message + '<'); } public static void main( String[] args ) throws Exception { if( args.length != 1 ) { System.out.println( "Usage: jaco Client <ior_file>" ); System.exit( 1 ); } File f = new File( args[ 0 ] ); //check if file exists if( ! f.exists() ) { System.out.println("File " + args[0] + " does not exist."); System.exit( -1 ); } //check if args[0] points to a directory if( f.isDirectory() ) { System.out.println("File " + args[0] + " is a directory."); System.exit( -1 ); } // initialize the ORB. Properties props = new Properties(); props.put( "org.omg.PortableInterceptor.ORBInitializerClass.bidir_init", "org.jacorb.orb.giop.BiDirConnectionInitializer" ); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init( args, props ); BufferedReader br = new BufferedReader( new FileReader( f )); // get object reference from command-line argument file org.omg.CORBA.Object obj = orb.string_to_object( br.readLine() ); br.close(); CallbackServer server = CallbackServerHelper.narrow( obj ); Any any = orb.create_any(); BidirectionalPolicyValueHelper.insert( any, BOTH.value ); POA root_poa = (POA) orb.resolve_initial_references( "RootPOA" ); Policy[] policies = new Policy[4]; policies[0] = root_poa.create_lifespan_policy(LifespanPolicyValue.TRANSIENT); policies[1] = root_poa.create_id_assignment_policy(IdAssignmentPolicyValue.SYSTEM_ID); policies[2] = root_poa.create_implicit_activation_policy( ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION ); policies[3] = orb.create_policy( BIDIRECTIONAL_POLICY_TYPE.value, any ); POA bidir_poa = root_poa.create_POA( "BiDirPOA", root_poa.the_POAManager(), policies ); bidir_poa.the_POAManager().activate(); ClientCallback ccb = ClientCallbackHelper.narrow( bidir_poa.servant_to_reference( new Client() )); // PrintWriter out = new PrintWriter( new FileWriter( "callback_IOR" )); // out.println( orb.object_to_string( ccb )); // out.flush(); // out.close(); server.callback_hello( ccb, "A test string" ); } }// Client