5

我希望能在这个奇怪的问题上得到一些帮助。我们正在运行 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错误。

我可以使用任何人的任何帮助或建议。

4

2 回答 2

3

连接被拒绝。这听起来像是防火墙/程序未运行的问题。试一试telnet <machine> 2809。如果一切正常/启用,您应该得到“已连接到”而不是拒绝。

我在 UNIX 客户端上运行,因此路径使用 UNIX 样式。

  1. jacORB 安装正确吗?例如,从 orb.properties 文件中获取名称服务条目(在 ${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)

不运行:(不显示)

  1. ns 启动时将记录它从哪里读取属性,并且它不应该抛出任何错误。如果确实如此,您的属性文件有问题。

  2. 虚拟机参数。-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
...

跳过大量其他读/写流量

于 2010-05-27T14:21:31.847 回答
1

如果没有看到其余代码,我无法确定,但我很确定您需要将 InitRef 字符串更改为:

-DORBInitRef.NameService=corbaloc::localhost:2809

当您的客户端连接时,这应该为您提供命名服务的根命名上下文,然后您可以遍历 NameContext 树以获取所需的服务器对象。

于 2010-05-26T16:08:42.193 回答