`
meiping
  • 浏览: 47610 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java Corba示例程序(JDK1.5

    博客分类:
  • Java
阅读更多

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

 

分享到:
评论

相关推荐

    CORBA-Example:使用Java的简单CORBA实现

    CORBA示例 使用Java的简单CORBA实现 指示 1.写入IDL文件 IDL文件定义客户端和服务器将用于通信和传递对象的接口。 编译IDL文件时,它将生成许多文件,称为存根和框架: 客户端使用存根与服务器进行通信 服务器使用...

    java 编程入门思考

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    Java初学者入门教学

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    java联想(中文)

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    JAVA_Thinking in Java

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    Thinking in Java简体中文(全)

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    Thinking in Java 中文第四版+习题答案

    13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴板 13.18 可视编程和 ...

    CorbaAddition:CORBA项目示例

    #CORBA演示(均在cmd窗口中) 假定已生成corba util类:idlj -fall Addition.idl #1。 开始球经纪人启动orbd -ORBInitialPort 1050 #2。... 使用appletviewer c来运行applet:/Java/jdk1.8.0_45/bin/appletviewer de

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    Think in Java(中文版)chm格式

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 ...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

    Java2核心技术.part5

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    Java2核心技术.part3

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    Java2核心技术.part1

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8解释型 ...

    Java2核心技术.part6

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    Java2核心技术.part4

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    Java2核心技术.part2

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    java简单读取properties配置文件的方法示例

    主要介绍了java简单读取properties配置文件的方法,涉及java针对properties配置的载入及文件属性读取相关操作技巧,需要的朋友可以参考下

    ThinkInJava

    A.6.3 Java程序片和CORBA A.6.4 比较CORBA与RMI A.7 总结 附录B 对比C++和Java 附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 ...

Global site tag (gtag.js) - Google Analytics