至于怎么通过idl映射成java的部分我就全部跳过了……
这里说一点其他教程上没有写的地方……
1.其他教程上使用的启动方式都是jaco xx.xxx命令
单单使用java xxx.xxx是启动不了的,出现下列异常
那么让我们看看jaco的shell核心代码……
jaco
无非就是多了几个-d参数,如果客户端是命令行模式的调用的话 还是没什么问题的……
如果客户端类是被动入口的话……那么我们就要在Client.java里作点手脚了……
原先的初始化ORB部分
改为(果然阿……Jacorb也有自己的特殊属性,和现在的JBOSS利用JNDI找EJB一模一样的讨厌……)
今天晚上2个小时就花在shotting上了= =!手册我也没看的很仔细不知道手册上有没有,完全是靠以前被JBOSS的JNDI折磨的经历联想出来的,没想到成功了……
运行了一下,连接是没问题的,但是出现了新的情况
看着异常好像说是某个class没找到……自己用眼睛又去确认了一下lib中的jar,的确是有的……
思考并GOOGLE一下- -终于在一篇全洋文的文档里看到了这个是提示没有找到ns_rf的路径……
回忆了一下ns_rf的路径只有在配置文件里jacorb.property才有……很多教程里也强调了要把他放在classes文件夹下
拷贝过来放在自己的src下,再运行了一次并成功了……本来还不理解为什么配置文件里的rf还能用url发布……现在算明白了,根本和wsdl是一个功能的……解释接口……
历时3个小时,手写完了这个HelloWorld……真想把发明JNDI的SB杀了……
这里说一点其他教程上没有写的地方……
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杀了……