【问题标题】:Slow Startup for Java Web Start ApplicationJava Web Start 应用程序启动缓慢
【发布时间】:2010-04-29 15:57:35
【问题描述】:

我正在使用 Netbeans IDE 开发一个 Java Web Start 应用程序,该应用程序将从 Web 启动,然后使用 EclipseLink JPA 访问远程 MySQL 数据库。我正在使用 Swing 应用程序框架来管理我的应用程序的生命周期。

当我从 Netbeans 启动应用程序时,加载我的应用程序大约需要 7 秒,但是当我使用 Netbeans IDE 创建 Web Start 分发包(包含 JAR 和 JNLP 文件)时,启动大约需要 60 秒.此外,“验证应用程序”/“下载应用程序”进度条窗口似乎每次启动应用程序时都会运行,即使它的副本已经被缓存。

从用户的角度来看,首先看到我的启动屏幕 1 到 2 秒,然后是“验证应用程序”/“下载应用程序”进度条窗口 5 到 20 秒,然后在 40 秒内什么也没有。应用程序启动。

应用程序代码的编写方式应在 JPA 开始加载持久性单元之前显示自己(所以我怀疑这是问题所在),但我想我会提到它以防万一。


更新:方法 createEntityManagerFactory 随着 Web 启动速度变慢

进一步研究后,我发现当我从 Netbeans 运行应用程序或远程登录到我的服务器在那里启动 JNLP,但是当我通过网络运行应用程序时,同一行需要 35 秒(极大地延迟了启动)。有趣的是,这一次变得更糟,因为我的互联网连接速度越来越差。下面是我正在使用的 JNLP 文件的副本。

有人知道是什么原因导致了这种延迟吗?

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

我的应用 我的应用供应商 我的应用说明 我的应用

【问题讨论】:

  • 您使用的是哪个 JDK 和 JRE?一些较旧的 1.6 JRE 实际上不缓存...
  • 我通常的解决方案是使用jstack 或类似的方法来查看问题出在哪里,并检查堆栈跟踪。这可能不是 CPU 问题,可能是尝试使用 OCSP 检查证书,这取决于 OCSP 服务器的性能(通常很糟糕)。
  • Tedil:我使用的是 JDK 1.6.0_11 和 JRE 1.6.0_18-b07。 Tom Hawtin:我也怀疑这是 CPU 问题,因为从 NetBeans 启动应用程序时运行良好。我将研究 OCSP 的可能性。谢谢。

标签: java startup java-web-start


【解决方案1】:

我不确定你是否解决了这个问题。但是,我重复了你的问题并修复了它。我所要做的就是从 Eclipselink 切换到 Toplink。就这么简单。启动时间从 1 到 2 分钟缩短到 5 秒。我什至跟踪了该应用程序,并在 eclipselink 的初始化过程中发现了同样的挂起。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    首先,在 Java 控制面板中启用所有日志记录。这将使您能够准确地看到 Java WebStart 正在做什么(但除非您有权访问 WebStart 源代码,否则其中的大部分内容并没有多大意义)。

    我的猜测来自您的描述,您的网络配置中有一个或多个无法访问的 DNS 服务器,并且您想要访问不可用的网络资源。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2018-02-20
      • 2010-12-27
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多