转JAVA、CORBA版HelloWorld程序

来源:互联网 发布:淘宝号怎么升级3心 编辑:程序博客网 时间:2024/05/21 16:24
 开发环境:JDK1.5,Windows XP
实现步骤: A 编写编译IDL接口 B 编写编译服务端程序 C 编写编译客户端程序 D 运行
实现详解:
1 编写IDL接口HelloWorld.idl:
module sample{
       interface HelloWorld{
              string sayHello();
       };
};
2  编译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!

原创粉丝点击