尝试连接到Jacorb命名服务时出错
我希望能帮助解决这个奇怪的问题。 我们正在运行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"
-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
错误。
我可以使用任何人的帮助或建议。
拒绝连接。 这听起来像防火墙/程序没有运行问题。 尝试telnet
。 如果一切正常运行/启用,您应该获得“连接到”而不是拒绝。
我正在UNIX客户端上运行,因此路径使用UNIX样式。
-
jacORB安装正确吗? 例如,从orb.properties文件中获取nameservice条目(在$ {JAVA_HOME} / jre / lib /我使用“
ORBInitRef.NameService=corbaloc::localhost:2809/NameServer
”,因为“NameServer”在生产名称服务器上使用不是另一串“标准……”属性文件中的其他更改是将路径设置为UNIX样式(即e:\ NS_Ref – > / 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)
$ 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 :: localhost:2809 / NameService -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 ...
跳过大量其他读/写流量
我不能确定没有看到其余的代码,但我很确定你需要将InitRef字符串更改为:
-DORBInitRef.NameService=corbaloc::localhost:2809
当您的客户端连接时,这应该为您提供命名服务的根命名上下文,然后您可以遍历NameContext树以获取所需的服务器对象。