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

时间:2010-11-23 18:29:13

标签: java java-web-start

情况:

拥有多个内部Java应用程序的大型公司,这些应用程序通过Java Web Start从Java Web Application启动。用户登录Java Web应用程序并选择通过Java WebStart启动的程序。当用户尝试运行应用程序时,应用程序将记录在数据库中。应用程序启动后,它会在数据库中标记成功的行。

问题:

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

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

目标/问题:

我想确定原因的数量。无论如何都要检测为什么Java Web Start App无法启动,以便我可以看到这种情况经常发生的情况?还有其他原因我可能不会考虑吗?

2 个答案:

答案 0 :(得分:2)

你的原因似乎都是合理的,但我认为通过添加更多代码来解决问题会很困难,特别是前两个原因。我认为您需要进行一些更老式的故障排除,以便您可以复制用户遇到的问题。

也许在网络应用中有“麻烦启动?”经历前两个问题之一的用户可以用来报告问题的链接,因为他们应该能够轻松检测到应用程序没有启动。

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

答案 1 :(得分:1)

我想建议你分别解决每个案例。

* 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. 一些疯狂的解决方案。让我们回到剧本。脚本可以通知服务器端应用程序将要启动。服务器启动计时器任务,在DB中检查应用程序状态。如果应用程序未连接到服务器,则服务器可以通过使用“net send”(如果用户在Windows上)发送消息来通知用户,或者如果用户在其他平台上则发送邮件。