java corba例子_Java编写CORBA的一个简单例子

41528d3028836879cd698677c3999917.gifJava编写CORBA的一个简单例子

写一个CORBA程序的步骤: 1. 编写IDL接口定义文件; 2. 将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根; 3. 基于服务器框架,编写服务对象实现程序; 4. 基于客户端存根,编写客户对象调用程序; 5. 分别编译客户对象和服务对象程序; 6. 运行服务对象和客户对象程序; 写一个Hello,CORBA的小程序 1. 编写IDL接口定义文件 文件名:Hello.idl module HelloApp{ interface Hello{ string sayHello(in string sayHello); }; }; 程序解释:定义一个模块 HelloApp,这个相当于JAVA里面的包.然后定义了一个接口Hello,该接口包含一个方法sayHello,用来显示Hello,CORBA 2. 将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根; Java IDL 即是CORBA 的一个实现,它是JDK1.3 或更高版本的核心软件包之一,定义在org.omg.CORBA及其子包中。我们利用JAVA提供的IDL编译工具对IDL文件进行编译. idlj -oldImplBase -fall Hello.idl 先解释一下参数的意思.-oldImplBase 表示生成与旧(1.4 版之前)JDK ORB 兼容的框架.-f 是定义要发出的绑定。-fall表示绑定所有.包括客户端和服务器端. n _HelloImplBase.java 该抽象类是一个服务器 skeleton,它可为服务器提供基本的 CORBA 功能。它实现 Hello.java 接口。服务器类 HelloServant 扩展 _HelloImplBase。 n _HelloStub.java 该类是客户机 stub,可为客户机提供 CORBA 功能。它实现 Hello.java 接口。 n Hello.java 该接口含有 IDL 接口的 Java 版本。Hello.java 接口扩展 org.omg.CORBA.Object 并提供标准的 CORBA 对象功能。 n HelloHelper.java 这是一个终态类,可以提供辅助功能,特别是提供将 CORBA 对象引用转换为适当类型所需的 narrow() 方法。 n HelloHolder.java 这是一个终态类,其中含有 Hello 类型的公有实例成员。它可为“out” 和 “inout” 变量提供操作。CORBA 有这些变量,但不容易映射为 Java 的语义。 n HelloOperations.java 这是一个接口类,其中含有方法 sayHello()。 生成了相应的代码后,接下来对Hello接口进行实现,该类继承_HelloImplBase类.因为_HelloImplBase类是对HELLO接口的一个抽象的实现.新建一个HelloImpl.java文件,用来实现HELLO接口 HelloImpl.java import HelloApp.*; public class HelloImpl extends _HelloImplBase { HelloImpl() { super(); } public String sayHello(String message) { System.out.println(“It s server,clint is invoking“); System.out.println(“Hello“+message); return message; } } 实现Hello接口后,接下来就是对服务器端和客户端分别编写相应的代码 3. 基于服务器框架,编写服务对象实现程序; 服务器端程序编写的步骤 1. 创建一个 ORB 实例 2. 创建一个HelloImpl实例(CORBA Hello对象的实现)并通知 ORB 3. 获取一个命名上下文的 CORBA 对象引用,在该命名上下文中注册新 CORBA 对象 4. 在命名上下文中将新对象注册在“Hello”名下 5. 等待对新对象的调用 按此步骤写一个HelloServer.java的程序 HelloServer.java import org.omg.CosNaming.*; import org.omg.CORBA.*; public class HelloServer { public static void main(String args[]){ try{ //初始化ORB ORB orb=ORB.init(args,null); System.out.println(“ORB initial.“); //创建一个实例,并向ORB注册 HelloImpl helloImpl = new HelloImpl(); orb.connect(helloImpl); System.out.println(“将实例注册到ORB“); //获取一个命名上下文 org.omg.CORBA.Object obRef = orb.resolve_initial_references(“NameService“); NamingContext ncRef = NamingContextHelper.narrow(obRef); //绑定命名中的对象引用 NameComponent nc = new NameComponent(“Hello“,““); NameComponent path[] = { nc }; ncRef.rebind(path, helloImpl); //等待客户机的调用 java.lang.Object sync = new java.lang.Object(); synchronized (sync) { sync.wait(); } System.out.println(“等待CORBA客户端调用.“); } catch (Exception e) { System.err.println(“错误: “ + e); e.printStackTrace(System.out); } } } 4. 基于客户端存根,编写客户对象调用程序; HelloClient.java //

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值