我希望能帮助解决这个奇怪的问题。我们正在运行Jacorb名称服务器,我有一个简单的客户端,我正在尝试连接并做了很棒的CORBA伏都教。名称服务器正在运行,但是当我尝试启动我的Java应用程序时,我得到了"Connection failure" error (org.omg.CORBA.COMM_FAILURE, minor code 201, "caused by java.net.ConnectionException: Connection refused: connect")
。
这是奇怪的部分。该错误报告它正在尝试使用默认端口900进行连接,但我传入的参数尝试覆盖名称服务的端口号以匹配名称服务器使用的端口号。我的java命令是这样的:
java -classpath . HelloClient -Djava.endorsed.dirs="bla bla bla" <br>
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
-DORBInitRef.NameService=corbaloc::localhost:2809/StandardNS/NameServer-POA/_root
我还尝试了没有第一个大写字母D的参数(我已经两种方式都看过了,我不知道区别)。
现在,如果我输入-ORBInitialPort 2809
,那么客户端似乎尝试连接,但后来我收到corba.OBJECT_NOT_EXIST
错误。
我可以使用任何人的帮助或建议。
答案 0 :(得分:3)
拒绝连接。这听起来像防火墙/程序没有运行问题。
试试telnet <machine> 2809
。你应该得到一个“连接到”
如果一切正常运行/启用,则不是拒绝。
我在UNIX客户端上运行,因此路径使用UNIX样式。
jacORB安装正确吗?例如从中获取nameservice条目
orb.properties文件(在$ {JAVA_HOME} / jre / lib /中
我用“ORBInitRef.NameService=corbaloc::localhost:2809/NameServer
”
因为“NameServer”用于生产名称服务器而不是另一个
字符串“标准....”
属性文件中的其他更改是设置UNIX的路径
风格(即e:\ NS_Ref - &gt; / tmp / NS_Ref)
jacorb.naming.ior_filename=/tmp/NS_Ref
1a上。在属性文件中设置http://似乎没有做任何事情 关于在客户端解决问题。
1b中。注意:从ns开始:
ns -DOAPort=2809
日志将显示:
2010-05-27 10:00:47.777 FINE Created socket listener on 0.0.0.0/0.0.0.0:2809
2010-05-27 10:00:47.777 FINE Using port 2809
运行:
$ lsof | grep 2809
java 27529 jbsymolo 15u IPv6 693300 TCP *:2809 (LISTEN)
$ lsof -Pnl +M -i6
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Naming_Se 9678 1000 7u IPv6 45779 TCP *:51148 (LISTEN)
java 27959 1000 15u IPv6 696092 TCP *:2809 (LISTEN)
未运行:(不显示任何内容)
ns启动时会记录从中读取属性的位置,而不应该记录 抛出任何错误。如果它确实你的属性文件有问题。
VM参数。 -D用于设置系统属性。任何Java代码都可以 然后访问通过System.getProperty()定义的任何属性。即使 我也看过使用“非D”,我一直在使用D.
-DORBInitRef.NameService = corbaloc ::本地主机:2809 /名称服务 -Dorg.omg.CORBA.ORBClass = org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass = org.jacorb.orb.ORBSingleton
在Eclipse中运行客户端时,我在控制台中看到以下内容:
May 27, 2010 10:01:06 AM org.jacorb.config.JacORBConfiguration init
INFO: base configuration loaded from file /usr/lib/java/jdk1.6.0_18/jre/lib/orb.properties
...
2010-05-27 10:01:09.836 FINE Trying to connect to 127.0.0.1:2809 with timeout=90000.
2010-05-27 10:01:09.844 INFO Connected to 127.0.0.1:2809 from local port 45745
2010-05-27 10:01:09.846 FINE wrote 12 bytes to 127.0.0.1:2809
...
跳过大量其他读/写流量
答案 1 :(得分:1)
我不能确定没有看到其余的代码,但我很确定你需要将InitRef字符串改为:
-DORBInitRef.NameService=corbaloc::localhost:2809
当您的客户端连接时,这应该为您提供命名服务的根命名上下文,然后您可以遍历NameContext树以获取所需的服务器对象。