Jacorb下的HelloWorld

至于怎么通过idl映射成java的部分我就全部跳过了……
这里说一点其他教程上没有写的地方……

1.其他教程上使用的启动方式都是jaco xx.xxx命令
单单使用java xxx.xxx是启动不了的,出现下列异常

com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init>
...
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2172)
....

那么让我们看看jaco的shell核心代码……

jaco

exec "$JAVA_CMD" \
-Djava.endorsed.dirs=/home/panchenliang/bin/JacORB/lib \
-Djacorb.home="${JACORB_HOME}" \
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \
-classpath "${CLASSPATH}" \
"$@"

无非就是多了几个-d参数,如果客户端是命令行模式的调用的话 还是没什么问题的……
如果客户端类是被动入口的话……那么我们就要在Client.java里作点手脚了……
原先的初始化ORB部分

ORB orb = ORB.init(args, null);

改为(果然阿……Jacorb也有自己的特殊属性,和现在的JBOSS利用JNDI找EJB一模一样的讨厌……)

props.put("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");
props.put("org.omg.CORBA.ORBSingletonClass",
"org.jacorb.orb.ORBSingleton");
ORB orb = ORB.init(args, props);

今天晚上2个小时就花在shotting上了= =!手册我也没看的很仔细不知道手册上有没有,完全是靠以前被JBOSS的JNDI折磨的经历联想出来的,没想到成功了……

运行了一下,连接是没问题的,但是出现了新的情况

ERROR : org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)
at org.omg.CosNaming._NamingContextExtStub.resolve_str(_NamingContextExtStub.java:165)
at cn.akira.MyClient.main(MyClient.java:34)

看着异常好像说是某个class没找到……自己用眼睛又去确认了一下lib中的jar,的确是有的……
思考并GOOGLE一下- -终于在一篇全洋文的文档里看到了这个是提示没有找到ns_rf的路径……
回忆了一下ns_rf的路径只有在配置文件里jacorb.property才有……很多教程里也强调了要把他放在classes文件夹下
拷贝过来放在自己的src下,再运行了一次并成功了……本来还不理解为什么配置文件里的rf还能用url发布……现在算明白了,根本和wsdl是一个功能的……解释接口……

历时3个小时,手写完了这个HelloWorld……真想把发明JNDI的SB杀了……
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值