1. 建立一个文件名称为HelloApp 扩展 名为 idl 的文件
module HelloApp {
interface Hello {
string sayHello();
};
};
2.建立 HelloServer.java 文件
// HelloServer.java
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import java.io.*;
class HelloServant extends _HelloImplBase
{
public String sayHello()
{
return "/nHello nihao !!/n";
}
}
public class HelloServer {
public static void main(String args[])
{
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);
// create servant and register it with the ORB
HelloServant helloRef = new HelloServant();
orb.connect(helloRef);
// get the root naming context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
// bind the Object Reference in Naming
NameComponent nc = new NameComponent("Hello", "");
NameComponent path[] = {nc};
ncRef.rebind(path, helloRef);
// wait for invocations from clients
java.lang.Object sync = new java.lang.Object();
synchronized (sync) {
sync.wait();
}
} catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
}
}
3.建立 HelloClient .java 文件
// HelloClient .java
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class HelloClient
{
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");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
// test
System.out.println("OK..");
// resolve the Object Reference in Naming
NameComponent nc = new NameComponent("Hello", "");
NameComponent path[] = {nc};
Hello helloRef = HelloHelper.narrow(ncRef.resolve(path));
// call the Hello server object and print results
//String oldhello = helloRef.lastMessage();
//System.out.println(oldhello);
String Hello = helloRef.sayHello();
System.out.println(Hello);
} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}
}
4.开始编译文件
idlj -fall -oldImplBase HelloApp.idl
运行成功后,会在当前类的路径下生成一个HelloApp的文件夹,里面有对应的java类,有兴趣可以看看。
5.编译HelloClient.java和HelloServer.java,和HelloApp文件下的 java文件
6.在当前路径下运行(假设以上的文件存在c:/test之下)
a.
c:/>test/tnameserv -ORBInitialPort 1050
b. run server
c:/>test/java HelloServer -ORBInitialPort 1050
c. run client
c:/>test/java HelloClient -ORBInitialPort 1050
当你在运行HelloClient 后出现:
OK..
Hello nihao !!
你的测验成功了。