使用JAVA开发CORBA应用(2) { string ShowName(); }; }; 将其存为Show.idl。 2.编译接口并生成CORBA支持文件 我们用以下命令编译这个 IDL 接口: idltojava Show.idl idltojava是SUN公司的IDL编译器,可以免费从SUN公司站点上下载。 因为idltojava在编译IDL文件之前,需要进行预编译,而如果你的机器上没有预编译器,可以使用以下命令: idltojava -fno-cpp Show.idl 编译后将在当前目录下生成About子目录,其中会包括一些支持文件,如有兴趣可以看一下,但一定不要修改。 3.实现服务器 (ShowServer.java) ShowServer的main() 方法,可完成以下任务: (1)创建一个 ORB 实例 (2)创建一个服务对象实例(CORBA About 对象的实现)并通知 ORB (3)获取一个命名上下文的CORBA对象引用,在该命名上下文中注册新的CORBA对象 (4)在命名上下文中将新对象注册在“About”名下 (5)等待对新对象的调用 实现服务器源程序如下: import About.; import org.omg.CosNaming.; import org.omg.CosNaming.NamingContextPackage.; import org.omg.CORBA.; class ShowObject extends _ShowImplBase { public String ShowName() { return "\nMy name is Seymour!!\n"; } } public class ShowServer { public static void main(String args[]) { try{ // 创建和初始化 ORB ORB orb = ORB.init(args, null); // 创建服务对象并将其向 ORB 注册 ShowObject ShowRef = new ShowObject(); orb.connect(ShowRef); // 获取根命名上下文 org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); // 绑定命名中的对象引用 NameComponent nc = new NameComponent("About", ""); NameComponent path[] = {nc}; ncRef.rebind(path, ShowRef); // 等待来自客户机的调用 java.lang.Object sync = new java.lang.Object(); synchronized (sync) { sync.wait(); } } catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out); } } } 4.实现客户机 (ShowClient.java) 下面的应用程序客户机将完成以下任务: (1)创建一个ORB; (2)获取一个指向命名上下文的引用; (3)在命名上下文中查找“Show”并获得指向该 CORBA 对象的引用;