代码之家  ›  专栏  ›  技术社区  ›  jzd

如何检测何时/为什么Java Web启动无法为用户启动

  •  0
  • jzd  · 技术社区  · 15 年前

    情况:

    有几个通过Java Web启动的内部Java应用程序的大公司从javaweb应用程序开始。用户登录到Java Web应用程序并选择一个通过Java WebStart启动的程序。当用户试图运行应用程序时,应用程序会登录到数据库中。一旦应用程序启动,它就会在数据库中标记成功的行。

    问题:

    数据库中有用户启动程序的行,但应用程序从未更新它启动的数据库。我只能想到几个原因:

    • 用户没有安装JVM或可能是正确的版本
    • 由于web服务器/部署问题,无法加载应用程序。(例如,并不是应用程序所需的所有.jar都部署到web服务器上。
    • 应用程序与数据库存在连接问题,或出现导致它无法写入数据库的错误。

    目标/问题:

    我想找出原因的数量。有没有什么方法可以检测出为什么一个Java Web Start应用程序无法启动,这样我就可以看到这种情况发生的频率了?还有别的原因我可能不考虑吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   CarlG    15 年前

    您的原因似乎都是合理的,但我认为通过添加更多的代码,尤其是前两个原因,很难排除它们的故障。我认为你需要做一些更老式的故障排除,这样你就可以复制你的用户正在经历的问题。

    或许在网络应用程序中有一个“启动困难”有前两个问题之一的用户可以用来报告问题的链接,因为他们应该能够很容易地检测到应用程序没有启动。

    为了消除第三个原因,不要让应用程序本身直接连接到数据库,而是让它们通过HTTP与启动JNLP的web应用程序进行通信-可以合理地确保它们与该服务器具有连接。然后让那个web应用插入适当的数据库记录。

        2
  •  1
  •   AlexR    15 年前

    我想分别为每一个案子提出解决方案。

    * The user did not have JVM installed or possibly the correct version
    

    通常,用户通过在浏览器中单击指向JNLP文件的链接来启动web启动应用程序。尝试检查是否安装了java插件。您可以使用java脚本来完成。这样可以避免没有java插件的用户启动应用程序。我知道这不是理想的解决方案: -可能插件未安装,但桌面java可以运行。这是“假阴性” -用户可以第一次成功运行应用程序,但随后卸载JVM并再次尝试运行应用程序。

    * The application failed to load due to a web-server/deployment issue. (For example not all .jars required by the application were deployed to the web server.
    * The application had a connection issue with the database or a bug that caused it to not write to the database.
    

    所有其他问题都可以用某种装载机来解决。

    1. 使用bat文件/shell脚本运行应用程序,该脚本在运行应用程序本身之前测试java是否在这里。我知道web start运行应用程序本身,但您可以在桌面上创建特殊图标,通过脚本运行应用程序。
    2. 使用轻量级加载程序包装“大”应用程序,该加载程序检查类路径和(可能)数据库连接的有效性,然后运行应用程序。加载程序可以向用户和管理员发送故障通知
    3. 一些疯狂的解决方案。让我们回到剧本上来。脚本可能会通知服务器端应用程序将要启动。服务器启动计时器任务,检查数据库中的应用程序状态。如果应用程序尚未连接到服务器,则服务器可以使用“net send”(如果用户在windows上)发送消息,或者如果用户在其他平台上发送邮件来通知用户。