Java Web Start应用程序启动缓慢

时间:2010-04-29 15:57:36

标签: java startup java-web-start

我正在使用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缓慢

进一步研究后,我发现当我从Netbeans运行应用程序或远程登录时,方法createEntityManagerFactory--这是EclipseLink连接MySQL所必需的 - 大约需要5秒钟才能执行我的服务器在那里启动JNLP,但是当我通过网络运行应用程序时,同一行需要35秒(大大延迟启动)。有趣的是,随着我的互联网连接速度变差,这一次变得更糟。下面是我正在使用的JNLP文件的副本。

有没有人知道可能导致这种延迟的原因?

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

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

2 个答案:

答案 0 :(得分:6)

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

希望它有所帮助。

答案 1 :(得分:1)

首先,在Java控制面板中启用所有日志记录。这将使您能够准确了解Java WebStart正在做什么(但除非您有权访问WebStart源,否则其中大部分内容都没有用。)

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