Java CORBA 客户端在事件触发时断开连接

Posted

技术标签:

【中文标题】Java CORBA 客户端在事件触发时断开连接【英文标题】:Java CORBA Client Disconnects When Event Fires 【发布时间】:2010-04-28 00:04:48 【问题描述】:

我已经构建了一个订阅事件服务器的 Java CORBA 应用程序。应用程序缩小并正常登录,但是一旦将事件发送到客户端,它就会因以下错误而中断。请指教。

2010/04/25!13.00.00!E00555!enserver!EventServiceIF_i.cpp!655!PID(7390)!enserver - e._info=system exception, ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
TAO exception, minor code = 54410093 (invocation connect failed; ECONNRESET), completed = NO

编辑: 请注意,这只发生在某些机器上运行时。它适用于某些人,但不适用于其他人。即使在同一个平台上(我已经尝试过 Windows XP/7 和 CentOS linux)有些工作,有些不...

这是 WireShark 的输出...与非工作 PC 相比,工作 PC 与网络的交互性更强。工作 PC

No.     Time        Source                Destination           Protocol Info
     62 28.837255   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
     63 28.907068   fe80::5de0:8d21:937e:c649 ff02::1:3             LLMNR    Standard query A isatap
     64 28.907166   10.10.10.209          224.0.0.252           LLMNR    Standard query A isatap
     65 29.107259   10.10.10.209          10.255.255.255        NBNS     Name query NB ISATAP<00>
     66 29.227000   10.10.10.250          10.10.10.209          TCP      23120 > 50169 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1260 WS=0
     67 29.227032   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [ACK] Seq=1 Ack=1 Win=66560 Len=0
     68 29.238063   10.10.10.209          10.10.10.250          GIOP     GIOP 1.1 Request s=326 id=5 (two-way): op=logon
     69 29.291765   10.10.10.250          10.10.10.209          GIOP     GIOP 1.1 Reply s=420 id=5: No Exception
     70 29.301395   10.10.10.209          10.10.10.250          GIOP     GIOP 1.1 Request s=369 id=6 (two-way): op=registerEventStat
     71 29.348275   10.10.10.250          10.10.10.209          GIOP     GIOP 1.1 Reply s=60 id=6: No Exception
     72 29.405250   10.10.10.209          10.10.10.250          TCP      50170 > telnet [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
     73 29.446055   10.10.10.250          10.10.10.209          TCP      telnet > 50170 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1260 WS=0
     74 29.446128   10.10.10.209          10.10.10.250          TCP      50170 > telnet [ACK] Seq=1 Ack=1 Win=66560 Len=0
     75 29.452021   10.10.10.209          10.10.10.250          TELNET   Telnet Data ...
     76 29.483537   10.10.10.250          10.10.10.209          TELNET   Telnet Data ...
     77 29.483651   10.10.10.209          10.10.10.250          TELNET   Telnet Data ...
     78 29.523463   10.10.10.250          10.10.10.209          TCP      telnet > 50170 [ACK] Seq=4 Ack=5 Win=32768 Len=0
     79 29.554954   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [ACK] Seq=720 Ack=505 Win=66048 Len=0

电脑不工作

No.     Time        Source                Destination           Protocol Info
      1 0.000000    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
      2 2.999847    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
      3 4.540773    Cisco_3c:78:00        Cisco-Li_55:87:72     ARP      Who has 10.0.0.1?  Tell 10.10.10.209
      4 4.540843    Cisco-Li_55:87:72     Cisco_3c:78:00        ARP      10.0.0.1 is at 00:1a:70:55:87:72
      5 8.992284    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260

【问题讨论】:

我完全同意。我的前额因撞在 CORBA 墙上而流血 【参考方案1】:

Benny 你还在 corba 的枷锁下受苦吗?

如果是这样,以下可能会有所帮助:

您是否能够找出服务器运行的 TAO 版本? 您是否尝试过使用 Sun 的球体(远射)? 你可以试试OpenORB。 以上所有都失败了,如果你有 python 知识,你可以使用omniORBpy 访问服务器吗?

如果上述方法都不起作用,那么我不确定,但请告诉我,我可能会想出更多想法。服务器正在使用的 TAO 版本会有所帮助,至少您可以了解您正在处理的 corba 规范版本。

【讨论】:

我实际上确实最终使用了omniORBpy,但我遇到了相同(或相似)的问题。我正在使用 python 在 linux 上尝试它,但请参阅我的另一篇文章以获取更多信息。如果你能提供帮助,我会奖励这两个职位。 ***.com/questions/4418446/…【参考方案2】:

客户端和服务器是否在同一个局域网内运行?我的意思是您的客户端计算机上是否启用了任何防火墙或软件防火墙?还是在客户端和服务器之间?

【讨论】:

他们都在同一个局域网上。我什至尝试在一些机器上关闭 Windows 防火墙,但这些机器无法正常工作并且没有成功。 能否请您使用wireshark/tcpdump 捕获TCP/IP 流量?它可能对故障排除更有帮助。

以上是关于Java CORBA 客户端在事件触发时断开连接的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io断开事件错误地为其他用户触发,然后再次连接

WebSocket 重要信息错误状态码

linux网卡端口断开事件

当互联网连接或断开时得到通知

当建立或断开与 RTMP 模块的连接时,在 nginx 中触发事件

tcp keepalive超时会触发啥事件