JAVA、CORBA版HelloWorld程序

7 篇文章 0 订阅

开发环境:JDK1.5,Windows XP
实现步骤: A 编写编译IDL接口 B 编写编译服务端程序 C 编写编译客户端程序 D 运行
实现详解:
1 编写IDL接口HelloWorld.idl:
module sample{
       interface HelloWorld{
              string sayHello();
       };
};
 编译IDL接口:C:\xxf\aaron\study\corba>idlj –fall HelloWorld.idl
编译结果生成sample包,生成下述文件
_HelloWorldStub.java
HelloWorld.java
HelloWorldHelper.java
HelloWorldHolder.java
HelloWorldOperations.java
HelloWorldPOA.java
 
3 编写服务端程序:HelloWorldServer.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.CORBA.portable.*;
import org.omg.PortableServer.*;


class HelloWorldServant extends HelloWorldPOA {
    public String sayHello() {
        return "\nHello World!\n";
    }
}


public class HelloWorldServer {
    public static void main(String args[]) {
        try {
            //Initialize CORBA
            ORB orb = ORB.init(args, null);
            org.omg.CORBA.Object poaobj = orb.resolve_initial_references(
                    "RootPOA");
            org.omg.PortableServer.POA rootPOA = org.omg.PortableServer.
                                                 POAHelper.narrow(poaobj);
            org.omg.PortableServer.POAManager manager = rootPOA.the_POAManager();

            //New Servant
            HelloWorldServant objRef = new HelloWorldServant();
            HelloWorld obj = objRef._this(orb);

            //Binding
            NamingContext ncRef = NamingContextHelper.narrow(
                    orb.resolve_initial_references("NameService"));
            NameComponent nc = new NameComponent("HelloWorld", "");
            NameComponent path[] = {nc};
            ncRef.rebind(path, obj);

            //Run
            manager.activate();
            System.out.println("HelloWorld is running!");
            orb.run();
        } catch (Exception e) {
            System.err.println("ERROR: " + e);
            e.printStackTrace(System.out);
        }
    }
}
 
4 编写客户端程序: HelloWorldClient.java
import sample.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;

public class HelloWorldClient {
    public static void main(String args[]) {
        try {
            ORB orb = ORB.init(args, null);
            org.omg.CORBA.Object objRef = orb.resolve_initial_references(
                    "NameService");
            NamingContext ncRef = NamingContextHelper.narrow(objRef);

            NameComponent nc = new NameComponent("HelloWorld", "");
            NameComponent path[] = {nc};
            HelloWorld helloWorld = HelloWorldHelper.narrow(ncRef.resolve(path));

            String hello = helloWorld.sayHello();
            System.out.println(hello);
        } catch (Exception e) {
 /*           System.out.println("ERROR : " + e);
            e.printStackTrace(System.out);*/
 e.printStackTrace();
        }
    }
}


5 运行
启动名字服务器:C:\xxf\aaron\study\corba>tnameserv -ORBInitialPort 1050
启动服务端程序:C:\xxf\aaron\study\corba>java HelloWorldServer -ORBInitialPort 1050
启动客户端程序:C:\xxf\aaron\study\corba>java HelloWorldClient -ORBInitialPort 1050
输出:Hello World!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值