【问题标题】:"x connection host broken" on remote swing application远程摇摆应用程序上的“x 连接主机断开”
【发布时间】:2012-07-25 14:13:31
【问题描述】:

我的系统: 我有一个在没有监视器的 Solaris 10/X86 机器上运行的 java swing 应用程序。我有另一台机器(Linux/x86),我通过 X11 显示应用程序。

我的问题: 我的应用程序在 30 台机器上运行,24/7。有时 jvm 会因错误“X 连接主机损坏。”而崩溃。我的应用程序运行了数周且从未崩溃,其他应用程序在 1 天后崩溃一次,其他应用程序每周崩溃。很随意。

我做了什么/检查了什么: 所有应用程序的 I/O 都非常相似,它有点网络密集,但并不过分。内存、cpu 和磁盘使用情况也相似。有些机器比其他机器使用得更多,但与崩溃无关。 Linux/x86 上的 X 从未崩溃。网络似乎没问题,检查了交换机和 netstat。

我添加了 SignalHandlers 但找不到任何东西。检查内存泄漏和其他应用程序问题,但找不到任何东西。

我需要什么: 1)我该如何进一步调查?我怎样才能找到 x 连接中断的原因? 2) 我怎样才能让我的应用程序“X11 崩溃”证明?有可能的?!要recconect还是什么? 3) 这种“连接中断”问题是否有常见原因?或者任何常见的解决方案? (不,我不能无头运行=))

当然 jvm 没有为我生成任何内核 =(

【问题讨论】:

    标签: java swing crash x11 jvm-crash


    【解决方案1】:

    X11 通常通过 TCP/IP 连接运行;如果该连接因任何原因中断(网络故障、DHCP 地址更改等),您将失去 X 连接。如果服务器对客户端显示具有权限(主机),您可以想象只打开一个新的显示连接,但如果客户端已打开与服务器的终端会话以启动应用程序,您可能也会丢失终端会话网络中断。

    【讨论】:

    • “服务器”是指运行应用程序的计算机,对吗?无论如何,我的问题是我的应用程序结束了。当 X 连接中断时,JVM 调用 exit()。我从服务器调用应用程序,将 DISPLAY 变量设置为另一台机器并启动应用程序。
    • 是的,我指的是 X11 意义上的服务器,即应用程序运行的位置。客户端是应用程序显示的地方。由于您是从具有客户端显示权限的服务器启动的,因此您可以在遇到断开连接时自动重新连接。您需要保持应用程序处于活动状态,还是只需重新启动它就可以(后者比前者更容易实现)?
    • 需要保持应用程序处于活动状态。有可能吗?
    • 可能是,我不记得 Java 是如何处理 X11 异常的。如果你能捕捉到错误,你当然可以在短暂的停顿后重新初始化 UI。您最好让无头机器使用帧缓冲区并通过 vnc 从客户端机器访问它。这样您就可以随意连接/断开与您的管理计算机的连接,而不会中断正在运行的应用程序。
    • 无法捕捉到错误,但我会尝试使用 vnc 选项。谢谢!如果有效,会回复。
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2011-12-21
    相关资源
    最近更新 更多