我正在使用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文件的副本。
有人知道是什么原因导致了这样的延迟吗?
当我从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
jstack
或类似工具来查看堆栈跟踪,以确定问题所在。这可能不是CPU问题,也许是尝试使用OCSP检查证书,这取决于OCSP服务器的性能(通常很差)。 - Tom Hawtin - tackline