首页 文章

Java Webstart间歇性JAR没有更新

提问于
浏览
12

我们使用java Webstart在我们的Intranet上部署java应用程序 . 该应用程序接收频繁更新 . 在我们更新了Web服务器上的JAR / WAR(更改时间戳)后,用户将在一段时间内从桌面图标启动应用程序,Java Webstart将启动旧版本而不是下载新版本 .

这是我们的JNLP的粘贴,因为您可以看到offline-allowed打开,但始终更新检查始终和策略 . 此外,下载标志是渴望 . 根据我的理解,这些选项应始终导致检查服务器上的时间戳和下载JAR文件的缓存 .

我开始对Webstart感到沮丧!有没有人见过类似的问题?有解决方案吗我厌倦了通过每三分之一或五次更新手动清除他们的webstart缓存来引导人们 .

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
  <information>
    <title>TITLE</title>

    <vendor>VENDOR</vendor>

    <description>Our Utility Application</description>

    <description kind="short">Our Utility Application PRD</description>
    <icon href="images/util_icon.png" height="64" width="64"/>
    <offline-allowed/>
    <shortcut online="true">
      <desktop />
      <menu submenu="Utility Apps"/>
    </shortcut>
  </information>

  <security>
     <all-permissions />
  </security>

  <update check="always" policy="always" />

  <resources>
    <!-- requires 1.6+ -->
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-ea" initial-heap-size="128m" max-heap-size="512m" />

    <!-- application code, download jar before we start. -->
    <jar href="OurUpdatedJarName.jar" main="true" download="eager" />

    <property name="configfile" value="updatedJarName.config" />
  </resources>

  <application-desc main-class="main.Client">
    <argument>-D</argument> 
  </application-desc>
</jnlp>

8 回答

  • 1
  • 1

    你可能已经解决了这个问题 - 但是jnlp spec =“1.0” - 只有在jnlp spec 6.0之后才支持该元素 . 可能那是你更新失败的原因之一 .

  • 0

    假设客户端JRE是最新的,您可以按照thread中的建议尝试 <update check="timeout" policy="always"/> ,并在JNLP syntax文档中进行描述 .

  • 0

    我遇到了和你一样的问题,并通过以下方式解决了这个问题:

    • 改变

    <jar href="OurUpdatedJarName.jar" ...

    <jar href="OurUpdatedJarName-$VERSION.jar" ...

    • 将$ VERSION放入 <a href="foo-$VERSION.jnlp">Run</a>

    我们会为每个部署自动更新$ VERSION .

    我知道这是一个丑陋的解决方案,但它是每次都适合我们的解决方案 .

  • 1

    此问题是由 offline-allowed 标记引起的 .

    Per JNLP spec

    如果指定了offline-allowed,则Java Web Start还将检查是否有可用的更新 . 但是,如果已经下载了应用程序,则检查将在几秒钟后超时,在这种情况下,将启动缓存的应用程序 . 鉴于服务器连接速度相当快, the latest version of the application will usually be run, but it is not guaranteed . 但是,该应用程序可以脱机运行 .

  • 1

    我们已经在十几个国家/地区分发了java Web启动应用程序,当我们发现应用程序没有正确更新时,它是针对县网络的错误配置,或者是用户计算机的网络设置,主要是代理 . 在我们在西班牙的中心主管java网站开始总是工作正常 .

  • 0

    我一直在使用java webstart nextx.jar clone . 我跟踪我没有更新JAR问题到使用URLConnection.getLastUpdated()方法 . 由于它使用HEAD方法获取文件名的lastUpdated,因此有时它因为缓存getLastUpdated()而无法下载 . 我们决定使用我们自己的刷新应用程序的方法,因为webstart存在缺陷 .

  • 5

    我有这个问题只是因为我没有让应用程序打开足够的时间来完成更新 .

    如果您在JNLP中有此选项: update check="background" ,请在关闭应用程序之前等待一段时间,以便允许更新(在后台运行)完成 .

相关问题