Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止同一应用程序的并行JavaWebStart下载?_Java_Jnlp_Java Web Start - Fatal编程技术网

如何防止同一应用程序的并行JavaWebStart下载?

如何防止同一应用程序的并行JavaWebStart下载?,java,jnlp,java-web-start,Java,Jnlp,Java Web Start,我们已将Java Swing应用程序部署到intranet web服务器,以便客户机可以使用Java web Start访问和下载它。所有应用程序文件(jar文件)的总大小为130 MB 我们现在面临这个问题:当用户点击一个链接并启动下载过程时,会出现一个带有进度条的对话框。下载时,如果他/她再次单击链接,Java Web Start将启动另一个下载过程。此时将有两个相同应用程序的并行下载(两个进度对话框)。最终,当下载完成时,用户(或系统)缓存中将有大约260 MB的文件,这证明实际上下载了两

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

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

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


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

因为没有人回答,我会这样做,所以也许有一天它会对有相同问题的人有所帮助。根据我掌握的信息和测试,我发现没有办法指示JavaWebStart检测当前已下载的同一应用程序(由同一台机器上的同一用户发出)的请求

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

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

  • 在循环中等待(向用户显示一些进度指示器),直到创建锁文件(获取锁)
  • 从服务器下载更新的应用程序资源(如果有):
    javaws-import-silenthttp://someserver/jnlp-app.jnlp
  • 启动应用程序:
    javawshttp://someserver/jnlp-app.jnlp
  • 删除锁文件(释放锁)