Friday, January 16, 2009

Jacorb Publish a Corba Servant on well know port without Naming Service

Thanks to the posts from - [jacorb-developer] 'Publish a Servant on well know port'

I was able to do the same. Below are the server and client snippet. This is using Jacorb ORB.

Server code

String[] args3=  { "-DOAPort=4013" };

        java.util.Properties argProps = ObjectUtil.argsToProps( args3 );
               
        Properties props = System.getProperties();

        props.put("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");//JACORB
        props.put("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");
        props.put("org.omg.PortableInterceptor.ORBInitializerClass.bidir_init",
          "org.jacorb.orb.giop.BiDirConnectionInitializer");
        props.put("jacorb.implname","StandardImplName");
        props.putAll( argProps );
        System.setProperties(props);

orb = org.omg.CORBA.ORB.init(args, props);

root_poa = org.omg.PortableServer.POAHelper.narrow( orb.resolve_initial_references("RootPOA")); Any any = orb.create_any(); BidirectionalPolicyValueHelper.insert( any, BOTH.value );

org.omg.CORBA.Policy [] policies = new org.omg.CORBA.Policy[4]; policies[0] =Server.root_poa.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID); policies[1] =Server.root_poa.create_lifespan_policy(LifespanPolicyValue.PERSISTENT); policies[2] = root_poa.create_implicit_activation_policy( ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION ); policies[3] = orb.create_policy( BIDIRECTIONAL_POLICY_TYPE.value,any );

poa = root_poa.create_POA("NeDetailsPOA",root_poa.the_POAManager(),policies);

//Activate POA manager 
poa.the_POAManager().activate();

//Now register this with the ORB //
org.omg.CORBA.Object obj = poa.servant_to_reference(nedetials);
poa.activate_object_with_id("NeDetails".getBytes(), nedetials);
orb.run();

Client code

Usual Orb routine stuff & then

String location2 = "corbaloc:iiop:127.0.0.1:4013/StandardImplName/NeDetailsPOA/NeDetails"; org.omg.CORBA.Object obj = orb.string_to_object(location2); nedetails = NeDetailsHelper.narrow(obj); proto.inmc.fm.CorbaServer.NE_DETAILS details2 = nedetails.GetNEDetails(1);

No comments:

Install/Upgrade NVIDI Driver in Ubuntu for CUDA SDK

Most linux distribution comes with the Nouveau https://nouveau.freedesktop.org/wiki/ display driver configured. If you need to use NVIDIA...