jacorb的配置问题

由于工作需要用CORBA,而以前又从未接触过,因此在网上查询了大量的学习手册。感觉理论还是很好懂,不过用jacorb这个工具很头疼。很多资料都是按照如下例子讲解的:

1. 为了在调试时可以找到有关包,需要在系统环境变量中设置
JACORB_HOME=C:\JacORB
path=%PATH%;%JACORB_HOME%\bin
classpath=%CLASSPATH%;%JACORB_HOME%\lib\idl.jar;%JACORB_HOME%\lib\jacorb.jar;%JACORB_HOME%\lib\logkit-1.2.jar;%JACORB_HOME%\lib\avalon-framework-4.1.5.jar;%JACORB_HOME%\classes
2. 将jacorb_properties.template备份后,改名为jacorb.properties,并放入classpath路径中,我的路径 为c:\JacORB. 注意必须ORBInitRef.NameService=file:/c:/NS_Ref,如果是ORBInitRef.NameService=c: /NS_Ref,demo.grid会无法运行,出现下面的错误
[jacorb.orb] ERROR : Could not create initial reference for "NameService"
Please check property "ORBInitRef.NameService"
org.omg.CORBA.ORBPackage.InvalidName: IDL:omg.org/CORBA/ORB/InvalidName:1.0
at org.jacorb.orb.ORB.resolve_initial_references(ORB.java:1232)
at demo.grid.Server.main(Unknown Source)
3. 这一点很多人都没有说,我还是看原始文档才知道。为了在调试时可以找到jacorb.properties配置文件,配置orb.properties中 的jacorb.config.dir=c:/JacORB。注意必须是c:/JacORB,如果是c:\JacORB,会有找不到配置文件的错误
4. JacORB工具使用介绍:

Idl –d 编译后目录 idl文件

编译idl文件。

Ns ior文件位置

启动name service服务

lsns

文本方式列出当前服务中的name serviec列表

nmg

图形方式工作的name service列表,还可以新建Context(没有太明白这个概念)

dior –f ior文件位置

ior文件解码器,将ior文件翻译成用户可读格式。

Pingo –f ior文件位置

测试联结ior对象

5. 运行demo.grid例子程序:

例子程序源码在demo目录下,我们运行grid程序,它用来在一个表格中添加几个数字,再返回表格内容。

如果有ant的话,会很方便,在命令行方式下进入e:\JacORB\demo\grid目录下,敲入ant,编译好的class文件将放在 classes\demo\grid目录下。如果不用ant,那你可以一个一个编译,或者在ide中编译。在命令行方式进入classes目录,敲入 start jaco demo.grid.Server,将启动 服务Server。

敲入start jaco demo.grid.Client,启动client,我们就能看到运行结果了。相应的Server和ns显示联结信息。

不过我在使用2.3时,根本没有上面讲的那么顺利,其中有个网友提到了一下注意事项:

测试

1,打开cmd,输入ns (显示“ORB run”说明名字服务启动成功。)
2,新开cmd,输入jaco demo.grid.Server (显示“ORB run”说明grid服务成功。)
3, 新开cmd,输入jaco demo.grid.Client (显示“done”说明grid操作成功。)
常见问题总结
1,如果ns启动成功,但server启动失败,可能jacorb.properties配置问题。
2,如果ns提示没ns命令,path路径设置不对。
3,如ns提示没jaco命令,ant编译没成功。
4,如果ns提示“java.lang.NoClassDefFoundError:file...”,确保你的JAVA_HOME和JACORB_HOME

另外有个网友遇到了如下问题,

解决方法:
1、jacorb.org不知道在搞什么鬼,下载下来的latest版本的2.3.0的jacORB-bin\bin 下面的jaco和jaco.bat后面都带一个后缀".tpl",最后终于知道这个tpl是template!!删除所有.tpl后缀!
2、把jaco.bat中的JAVA_CMD替换成JAVA! 真是麻烦! 以前的2.2.3版本的都没出现过这种奇怪的问题!
3、ns命令,jaco Server命令,jaco Client命令都需要在单独的DOS打开!

这些问题我也遇到了,不过按照他们的方法还是未能解决,例如ant部署的时候一直不能终止,还报了些警告:如jdk要用1.4(我用1.6)。还有就是我的环境变量设置正确--没有空格,不过还是报了“java.lang.NoClassDefFoundError”

接下来我还是决定再看看官方的文档,这应该是权威了,不过是英文,只有借助金山词霸,看行不行了。

第二天,下了一个word文档,讲corba的HelloWorld,发现如果只是想了解corba的实现机制,不想去深入的话,用jdk自带的idlj工具就可以了,不需要jacorb。

你可能感兴趣的:(C++,c,ant,C#,金山)