`
akiraray
  • 浏览: 88369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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杀了……
分享到:
评论
1 楼 szbszb 2012-11-20  
你好,我在做JAVA的corba客户端时同样出现了你最后的那个问题:
CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
at CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)
at CosNaming._NamingContextStub.resolve(_NamingContextStub.java:151)
at com.kingtake.common.util.CorbaClientPtnHw.testCorba(CorbaClientPtnHw.java:97)
at com.kingtake.common.util.CorbaClientPtnHw.main(CorbaClientPtnHw.java:203)
具体是怎么解决的啊?我这边是做的华为的U2000北向Corba接口,华为只提供的IDL文件和接口说明,其他的啥都没有。

相关推荐

Global site tag (gtag.js) - Google Analytics