【发布时间】: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