我正在使用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的
答案 0 :(得分:6)
我不确定你是否解决了这个问题。但是,我重复了你的问题并修复了它。我所要做的就是从Eclipselink切换到Toplink。那么简单。初创公司从1到2分钟缩短到5秒。我甚至跟踪了应用程序,并在eclipselink初始化期间发现了同样的问题。
希望它有所帮助。
答案 1 :(得分:1)
首先,在Java控制面板中启用所有日志记录。这将使您能够准确了解Java WebStart正在做什么(但除非您有权访问WebStart源,否则其中大部分内容都没有用。)
我的描述中的 guess 是您的网络配置中有一个或多个无法访问的DNS服务器,并且您想要访问不可用的网络资源。