一、 使用到的软件 1. corba产品:OpenORB 下载地址:http://sourceforge.net/projects/openorb/ 解压后如下图所示  2. 开发工具Eclipse 3.4.2 3. 插件:ORBStudio777 下载地址:.ftp://www.orbzone.org用户名称:orbzone_downloads 密码:orbzone_downloads 使用第三方Ftp工具或者迅雷的资源探测器登陆后进入CORBA_Utilities文件夹,下面有3个zip压缩文件ORBStudio 775, ORBStudio776, ORBStudio777 ,我选择了777下载。 解压后如下图所示  4. Javacc 下载javacc,网址:https://javacc.dev.java.net/ 解压后如下图所示  二、安装配置 1. 解压OpenOrb.rar 2. 解压ORBStudio777.zip,从ORBStudio/plugins/下面取得 ORBStudio_7.7.7.jar 的JAR包放到Eclipse/plugins下面.我用的Eclipse版本是Eclipse3.4.2。如果考入Jar包前以前Eclipse是运行的请关闭,重新运行。 3. 运行CMD 到DOS,再到存放javacc的bin目录,输入 javacc -tm D:\Eclipse3.22\eclipse\ORBStudio\IDLParser.jj  4. 添加环境变量TCOO_HOME,值为OpenOrb目录的路径 5. 启动eclipse 6. windows/preferences/出现如下窗口选择ORB Studio/IDL Compiler/ 在右边选择OpenORB这里有5种编译器我们使用JacORB. 打开IDL Compiler 前面的加号选择  右边参数IDL Command: D:\ComponentTechnology\OpenOrb\OpenORB\bin\idl2java.bat Command Options: -d %D% %F%  这样就配置成功了Eclipse下面的Corba开发。Eclipse的新建选择如图:  三、开发步骤参考 1. 在eclipse里新建项目,Project lauyout 选择Create separate source and output folders 2. 给新项目添加Libraries,右键Properites--->Libraries--->Add Library--->User Library--->User Libraries...--->New...--->Add JARs... 找到OpenOrb\OpenORB\lib目录下openorb_orb-1.4.0.jar,openorb_orb_tools-1.4.0.jar OpenOrb\OpenORB\lib\endorsed目录下openorb_orb_omg-1.4.0.jar OpenOrb\tools\lib目录下launcher.jar,tools-1.4.0.jar OpenOrb\tools\lib\ext目录下所有.jar文件 3. src上右键New--->Other--->CORBA Wizard--->IDL files--->Simple IDL 4. 选择IDL文件,右键ORB Menu--->Compile,就自动生成文件 5. src上右键New--->Other--->CORBA Wizard--->Server--->Active object map--->Next在弹出的对话框里IDL filename栏选择/{projectName}/src/{IDLname}.idl Interface栏选择IDL文件里定义的接口名 Package栏里填写包名 Server classname栏里填写服务端类名 --->Next 在弹出的对话框,选中Create server class:项 6. 为生成的服务端类添加未实现的方法,并填写方法体 7. src 上右键New--->Other--->CORBA Wizard--->Client--->Simple implementation 在弹出的对话框里IDL filename栏选择/{projectName}/src/{IDLname}.idl Interface栏选择IDL文件里定义的接口名 Package栏里填写包名 Client classname栏里填写客户端类名 8. 在客户端类的main方法里,取消注释test.getORBInterface().operation1("A message in the bottle..."); 并修改传递的String内容 9. 运行服务端程序Server_AOM.java,然后运行客户端程序MyServiceClientImpl.java 如果,你要将你的程序包发布到别的机器上,就要用到名称服务,使用名称服务,我们需要在java代码上作些修改: 使用名称空间的配置: 1. 找到并注释服务端Server_AOM.java里main方法的下列代码: PrintWriter ps = new PrintWriter(new FileOutputStream(new File("server.ior"))); ps.println(orb.object_to_string(obj)); ps.close(); 取消下列代码(位置在上面代码的上方)的注释: // org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService"); // NamingContextExt nc = NamingContextExtHelper.narrow(ncobj); // nc.bind(nc.to_name("MyServerObject"), obj); 修改bind方法为rebind,并引入新的类 2. 找到并注释客户端MyServiceClientImpl.java里main方法的下列代码: LineNumberReader input = new LineNumberReader(new FileReader("server.ior")); String ior = input.readLine(); org.omg.CORBA.Object obj = orb.string_to_object(ior); 取消下列代码(位置在上面代码的上方)的注释: // org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService"); // NamingContextExt nc = NamingContextExtHelper.narrow(ncobj); // org.omg.CORBA.Object obj = nc.resolve_str("MyServerObject"); 引入新的类 修改org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService");里面的参数,服务端Server_AOM.java也要改。 改为"corbaloc::1.2@hostname:portNumber/NameService" 修改resolve_initial_references方法为string_to_object 修改所有异常为Exception 3. 用命令行的方式,在OpenOrb\NamingService\bin目录下执行ins -ORBPort=portNumber 4. 带参数 -ORBInitRef NameService=corbaloc::1.2@hostname:portNumber/NameService 运行服务端Server_AOM.java, 5. 然后运行客户端程序MyServiceClientImpl.java,结果是一样的。 目前为止,corba的本地、远程开发都已经配置完毕。 |