Java Corba示例程序(JDK1.5

1.         定义idl文件

module HelloApp
{
  interface Hello
  {
    string sayHello();
    oneway void shutdown();
  };
};
 

 

        

2.         生成stub

Idlj -fall Hello.idl

        

3.         服务器端

import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
 
import java.util.Properties;
 
class HelloImpl extends HelloPOA {
  private ORB orb;
 
  public void setORB(ORB orb_val) {
    orb = orb_val;
  }
   
  // implement sayHello() method
  public String sayHello() {
    return "\nHello world !!\n";
  }
   
  // implement shutdown() method
  public void shutdown() {
    orb.shutdown(false);
  }
}
 
 
public class HelloServer {
 
  public static void main(String args[]) {
    try{
      // create and initialize the ORB
      ORB orb = ORB.init(args, null);
 
      // get reference to rootpoa & activate the POAManager
      POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
      rootpoa.the_POAManager().activate();
 
      // create servant and register it with the ORB
      HelloImpl helloImpl = new HelloImpl();
      helloImpl.setORB(orb);
 
      // get object reference from the servant
      org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);
      Hello href = HelloHelper.narrow(ref);
          
      // get the root naming context
      org.omg.CORBA.Object objRef =
          orb.resolve_initial_references("NameService");
      // Use NamingContextExt which is part of the Interoperable
      // Naming Service (INS) specification.
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
      // bind the Object Reference in Naming
      String name = "Hello";
      NameComponent path[] = ncRef.to_name( name );
      ncRef.rebind(path, href);
 
      System.out.println("HelloServer ready and waiting ...");
 
      // wait for invocations from clients
      orb.run();
    }
        
      catch (Exception e) {
        System.err.println("ERROR: " + e);
        e.printStackTrace(System.out);
      }
          
      System.out.println("HelloServer Exiting ...");
        
  }
}
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
 
import java.util.Properties;
 
class HelloImpl extends HelloPOA {
  private ORB orb;
 
  public void setORB(ORB orb_val) {
    orb = orb_val;
  }
   
  // implement sayHello() method
  public String sayHello() {
    return "\nHello world !!\n";
  }
   
  // implement shutdown() method
  public void shutdown() {
    orb.shutdown(false);
  }
}
 
 
public class HelloServer {
 
  public static void main(String args[]) {
    try{
      // create and initialize the ORB
      ORB orb = ORB.init(args, null);
 
      // get reference to rootpoa & activate the POAManager
      POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
      rootpoa.the_POAManager().activate();
 
      // create servant and register it with the ORB
      HelloImpl helloImpl = new HelloImpl();
      helloImpl.setORB(orb);
 
      // get object reference from the servant
      org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);
      Hello href = HelloHelper.narrow(ref);
          
      // get the root naming context
      org.omg.CORBA.Object objRef =
          orb.resolve_initial_references("NameService");
      // Use NamingContextExt which is part of the Interoperable
      // Naming Service (INS) specification.
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
      // bind the Object Reference in Naming
      String name = "Hello";
      NameComponent path[] = ncRef.to_name( name );
      ncRef.rebind(path, href);
 
      System.out.println("HelloServer ready and waiting ...");
 
      // wait for invocations from clients
      orb.run();
    }
        
      catch (Exception e) {
        System.err.println("ERROR: " + e);
        e.printStackTrace(System.out);
      }
          
      System.out.println("HelloServer Exiting ...");
        
  }
}
 

 

        

4.         客户端

import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
 
public class HelloClient
{
  static Hello helloImpl;
 
  public static void main(String args[])
    {
      try{
        // create and initialize the ORB
         ORB orb = ORB.init(args, null);
 
        // get the root naming context
        org.omg.CORBA.Object objRef =
             orb.resolve_initial_references("NameService");
        // Use NamingContextExt instead of NamingContext. This is
        // part of the Interoperable naming Service. 
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
        // resolve the Object Reference in Naming
        String name = "Hello";
        helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
 
        System.out.println("Obtained a handle on server object: " + helloImpl);
        System.out.println(helloImpl.sayHello());
        helloImpl.shutdown();
 
         } catch (Exception e) {
          System.out.println("ERROR : " + e) ;
           e.printStackTrace(System.out);
           }
    }
 
}
 

 

        

5.         编译

javac *.java HelloApp/*.java

        

6.         启动

Sorbd -ORBInitialPort 1050 -ORBInitialHost localhost&

java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost&

java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost

 

你可能感兴趣的:(java)