1

我们已将 Java Swing 应用程序部署到 Intranet Web 服务器,以便客户端机器可以使用 Java Web Start 访问和下载它。所有应用程序文件(jar 文件)的总大小为 130 MB。

我们现在面临这个问题:当用户单击链接并启动下载过程时,会出现一个带有进度条的对话框。在下载过程中,如果他/她再次点击该链接,Java Web Start 将启动另一个下载过程。那时,同一应用程序将有两个并行下载(两个进度对话框)。最终,当下载完成时,用户(或系统)缓存中将有大约 260 MB 的文件,证明实际上下载了两个(相同的)应用程序。

有没有办法防止同时多次下载同一个应用程序?是否可以配置 Java Web Start 启动器,以便它可以检测何时已经下载了相同的应用程序?

澄清一下:我们的客户端机器实际上并不是经典客户端——它们是为数百个终端用户服务的 Citrix 服务器。因此,很容易发生同一应用程序在同一时间下载不止一次的情况。

4

1 回答 1

0

由于没有人回答,我会这样做,所以也许有一天它会对遇到同样问题的人有所帮助。根据我拥有的信息和我所做的测试,我发现无法指示 Java Web Start 检测当前已经下载的同一应用程序(由同一台机器上的同一用户发出)的请求。

显然,Java Web Start 将启动另一个下载过程,因此两个相同的应用程序内容将有两个相同的下载 - 从而不必要地消耗网络、Web 服务器和磁盘资源。在 Citrix XenApp 等虚拟应用程序交付系统中,这是一个相当大的问题。

我想到的一种解决方案是创建自定义 java 启动器应用程序,将下载请求与锁定文件同步。就像是:

  1. 循环等待(向用户显示一些进度指示器),直到创建锁定文件(获取锁定)。
  2. 从服务器下载更新的应用程序资源(如果有):javaws -import -silent http://someserver/jnlp-app.jnlp
  3. 开始申请:javaws http://someserver/jnlp-app.jnlp
  4. 删除锁定文件(释放锁定)
于 2012-04-16T22:42:13.373 回答