Package demo.corbaloc

Source Code of demo.corbaloc.Server

package demo.corbaloc;

import java.util.Properties;
import java.io.*;
import org.jacorb.orb.util.*;
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;
import org.omg.PortableServer.Servant;

import org.omg.PortableServer.ImplicitActivationPolicyValue;

public class Server
{
   public static void main(String[] args)
   {
      try
      {

         Properties props = new Properties();
         props.setProperty("jacorb.implname", "HelloServer");
         props.setProperty("OAPort", "6969");

         String helloID = "HelloServerID";

         //init ORB
         ORB orb = ORB.init(args, props);

         //init POA
         POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

         //init new POA
         Policy[] policies = new Policy[2];
         policies[0] = rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT);
         policies[1] = rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID);

         POA helloPOAPersistent = rootPOA.create_POA
            ("HelloPOAP", rootPOA.the_POAManager(), policies);


         // Setup a second POA with a transient policy therebye producing a different corbaloc.
         policies = new Policy[3];
         policies[0] = rootPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT);
         policies[1] = rootPOA.create_id_assignment_policy (IdAssignmentPolicyValue.SYSTEM_ID);
         policies[2] = rootPOA.create_implicit_activation_policy (ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);

         POA helloPOATransient = rootPOA.create_POA
            ("HelloPOAT", rootPOA.the_POAManager(), policies);

         helloPOAPersistent.the_POAManager().activate();
         helloPOATransient.the_POAManager().activate();

         // create a GoodDay object
         GoodDayImpl goodDayImpl = new GoodDayImpl("SomewhereP");
         helloPOAPersistent.activate_object_with_id(helloID.getBytes(), goodDayImpl);

         // Manually create a persistent based corbaloc.
         String corbalocStr = "corbaloc::localhost:"
         + props.getProperty("OAPort") + "/"
         + props.getProperty("jacorb.implname") + "/"
         + helloPOAPersistent.the_name() + "/" + helloID;

         System.out.println("Server 1 can be reached with:");
         System.out.println("   " + corbalocStr + "\n");

         org.omg.CORBA.Object objP = orb.string_to_object(corbalocStr);
         System.out.println("Server 1 ior: " + orb.object_to_string (objP));

         PrintWriter ps = new PrintWriter(new FileOutputStream(new File( args[0] ) + "persistent"));
         ps.println( orb.object_to_string( objP ) );
         ps.close();

         // Setup second server
         org.omg.CORBA.Object objT = helloPOATransient.servant_to_reference(new GoodDayImpl("SomewhereT"));

         // Use the PrintIOR utility function to extract a transient corbaloc string.
         corbalocStr = PrintIOR.printCorbalocIOR (orb, orb.object_to_string(objT));
         System.out.println("Server 2 can be reached with:");
         System.out.println("   " + corbalocStr + "\n");

         ps = new PrintWriter(new FileOutputStream(new File( args[0] ) + "transient"));
         ps.println( corbalocStr );
         ps.close();


         // Add an object key mapping to second server
         System.out.println("Adding object mapping for server 1 ior:" + orb.object_to_string (objP));
         ((org.jacorb.orb.ORB)orb).addObjectKey ("VeryShortKey", orb.object_to_string (objP));


         // wait for requests

         if (args.length == 2)
         {
            File killFile = new File(args[1]);
            while(!killFile.exists())
            {
               Thread.sleep(1000);
            }
            orb.shutdown(true);
         }
         else
         {
            orb.run();
         }
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
   }
}
TOP

Related Classes of demo.corbaloc.Server

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.