Java Web Start 应用程序启动缓慢

发布于 2024-08-30 18:19:12 字数 1045 浏览 10 评论 0原文

我正在使用 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 开始加载持久性单元之前显示出来(所以我怀疑这就是问题所在),但我想我应该提及它以防万一。


更新:Web Start 时 createEntityManagerFactory 方法缓慢

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

有谁知道可能导致这种延迟的原因是什么?

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

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

I'm using the Netbeans IDE to develop a Java Web Start application that will launch from the web and then use the EclipseLink JPA to access a remote MySQL database. I'm using the Swing Application Framework to manage life cycle for my app.

When I launch the application from Netbeans it takes about 7 second for my application to load, but when I use the Netbeans IDE to create a Web Start distribution package (with the JAR and JNLP files) it takes about 60 seconds to launch. Also, the "verifying application"/"downloading application" progressbar window seems to run every time I launch the app even though a copy of it has already been cached.

From the users point of view, one first sees my splash screen for 1 to 2 seconds, then the "verifying application"/"downloading application" progressbar window for 5 to 20 seconds and then nothing for a good 40 seconds before the application launches.

The app code is written such that it should show itself BEFORE the JPA starts loading the persistence unit (so I doubt that's the problem), but I thought I'd mention it just in case.


Update: Method createEntityManagerFactory Slow With Web Start

Having looked into this further, I've found that the method createEntityManagerFactory--which is necessary for EclipseLink to connect to MySQL--takes aboutn 5 seconds to execute when I run the applicaiton from Netbeans or when I remotely log in to my server to launch the JNLP there, but when I run the application via the web the same line takes 35 seconds (hugely delaying startup). Interestingly, this time gets even worse as my internet connection speed gets worse. Below is a copy of the JNLP file I'm using.

Does anyone have any idea what may be causing such a delay?

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

MyApp
My App Vendor

My App Description
MyApp

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一页 2024-09-06 18:19:12

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

希望有帮助。

I'm not sure if you solved this yet. But, I repeated your problem and fixed it. All I had to do was switch from Eclipselink to Toplink. That simple. Startups went from 1 to 2 minutes down to 5 seconds. I even traced the app and found the same hanging during the init of eclipselink.

Hope it helps.

鹊巢 2024-09-06 18:19:12

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

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

First of all, in the Java Control Panel enable ALL logging. This will allow you to see exactly what Java WebStart is doing (but much of it doesn't make much sense unless you have access to the WebStart source).

My guess from your description is that you have one or more unreachable DNS servers in your network configuration AND you want to access a network resource that isn't available.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文