Java Web Start 应用程序启动缓慢

4
我正在使用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 Start慢
进一步调查后,我发现createEntityManagerFactory方法(EclipseLink连接到MySQL所必需的)在我从Netbeans运行应用程序或在我远程登录到服务器上启动JNLP时需要大约5秒钟执行,但是当我通过网络运行应用程序时,同一行需要35秒钟(极大地延迟启动)。有趣的是,当我的互联网连接速度变慢时,这个时间会变得更糟。以下是我使用的JNLP文件的副本。
有人知道是什么原因导致了这样的延迟吗?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

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


1
你使用的是哪个JDK和JRE?一些旧的1.6 JRE实际上不会缓存... - Tedil
我通常在遇到这种问题时,会使用jstack或类似工具来查看堆栈跟踪,以确定问题所在。这可能不是CPU问题,也许是尝试使用OCSP检查证书,这取决于OCSP服务器的性能(通常很差)。 - Tom Hawtin - tackline
Tedil: 我正在使用JDK 1.6.0_11和JRE 1.6.0_18-b07。Tom Hawtin: 我也怀疑这不是CPU问题,因为当从NetBeans启动应用程序时,它运行得非常好。我会研究一下OCSP的可能性。谢谢。 - igillespie
2个回答

6

我不确定您是否已经解决了这个问题。但是,我重复了您的问题并解决了它。我所要做的就是从Eclipselink切换到Toplink而已。如此简单。启动时间从1到2分钟降至5秒。我甚至跟踪应用程序并发现在eclipselink初始化过程中也会出现卡顿。

希望这可以帮助到您。


1
首先,在Java控制面板中启用所有日志记录。这将允许您准确地查看Java WebStart正在做什么(但如果您无法访问WebStart源,则其中很多内容都没有意义)。
根据您的描述,我猜测您的网络配置中有一个或多个无法访问的DNS服务器,并且您想要访问的网络资源不可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接