Eclipse下Corba 开发环境的搭建 IDL OpenORB

下载corba产品 OpenORB (http://sourceforge.net/projects/openorb/ )里面的内容全下。

类似于:

2,开发工具:Eclipse (这个不必说了吧,是一个公共开发平台,并可做为C、C++、Cobol等语言的开发IDE,十分优良,强烈推荐)我用的是3.1的。3.0的也可以。

3,插件:ORBStudio772package.zip 在(http://homepage2.nifty.com/interpress/ORBstudio/download/ORBStudio772package.zip)下载。

好,工具都有了,开始配置:


二,安装配置步骤

1.解压OpenOrb.rar
2.解压ORBStudio772package.zip里面的插件,到相应的Eclipse插件目录下
3.添加环境变量TCOO_HOME,值为OpenOrb目录的路径
4.启动eclipse
5. 在下拉菜单Window的Preferences项里找到ORB Studio--->IDL Compiler--->OpenORB, 在IDL Command栏里,找到OpenOrb安装目录下的OpenORB/bin/idl2java.bat, 在Command Options栏里,填写参数 -d %D% %F%


三,开发步骤参考

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/目录下所有.jar文件


3.src上右键New--->Other--->CORBA Wizard--->IDL files--->Simple IDL
4.选择IDL文件,右键ORB Menu--->Compile 把生成的MyServer包移动到src目录下
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,

然后运行客户端程序MyServiceClientImpl.java

结果是一样的。

目前为止,corba的本地、远程开发都已经配置完毕。以后在具体应用过程中遇到什么困难,欢迎大家一起探讨。

你可能感兴趣的:(eclipse,server,String,object,eclipse插件,interface)