【问题标题】:Error when trying to connect to Jacorb naming service尝试连接 Jacorb 命名服务时出错
【发布时间】:2011-02-07 16:38:57
【问题描述】:

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

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

【问题讨论】:

  • 哇,没人敢猜吗?我感到很失望:\
  • 能否将您的 Java 代码发布到您尝试建立与名称服务器的连接的位置?

标签: java corba


【解决方案1】:

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

-DORBInitRef.NameService=corbaloc::localhost:2809

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

【讨论】:

    【解决方案2】:

    连接被拒绝。这听起来像是防火墙/程序未运行的问题。 试试telnet &lt;machine&gt; 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
    ...
    

    跳过大量其他读/写流量

    【讨论】:

    • 嗨,吉姆,你能告诉我你如何将超时配置为 90000 毫秒
    • # 等待指定的毫秒数等待对请求的回复。如果 # 超出,将抛出 org.omg.CORBA.IMP_LIMIT 异常 #jacorb.client.pending_reply_timeout=0
    • # 客户端连接空闲超时,设置非零以停止 # 在这么多毫秒后阻塞。 # # 警告:这与待处理的回复无关,即连接 # 也可以关闭,如果超过超时,但有未答复的请求。 #jacorb.connection.client_idle_timeout=0
    • # 如果没有发生任何事情,服务器保持连接打开的最长时间 # # 警告:这与当前正在处理的请求无关,即如果超时 # 超出,连接也可以关闭,但是有未答复的请求。 # #jacorb.connection.server_timeout=10000
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2023-03-03
    • 1970-01-01
    • 2016-12-18
    • 2016-12-03
    • 2020-01-07
    • 2020-09-11
    相关资源
    最近更新 更多