转JAVA、CORBA版HelloWorld程序

开发环境: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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值