Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7063209

JWS (started from desktop shorcut) doesn't update updated JNLP file from server

XMLWordPrintable

    • b03
    • x86
    • windows_xp, windows_7

        FULL PRODUCT VERSION :
        java version "1.6.0_26"
        Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
        Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)


        ADDITIONAL OS VERSION INFORMATION :
        Microsoft Windows XP [versio 5.1.2600]


        A DESCRIPTION OF THE PROBLEM :
        If there is a desktop shortcut to a JNLP application, the old JNLP file is used when run from the desktop shortcut even after the JNLP file is updated at the server. (This happens probably only if JWS cache path contains whitespace)

        According to http://www.coderanch.com/t/528570/JNLP-Web-Start/java/Do-jnlp-file-updates-itself#2455103 this problem seems to happen only when the JWS cache path contains whitespace.

        According to that discussion thread, the last Java version before this problem occurred was 1.6.21.

        REGRESSION. Last worked in version 6

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Note that in my example I have a local distribution and the change done to the JNLP file is changing the codebase. Anyway, with us, the problem occurs also with
        i) other kind of changes (like adding a new jar needed by the application etc)
        ii) when the application is distributed from a HTTP server (the actual usage where our problem is)


        Actual step-by-step example:
        1. Have a JNLP file with jar used (in my example at "D:\jnlp-test")
        2. Start the application from the JNLP file (allow creating desktop shortcut)
        3. Modify the JNLP file.
         - In my example, update the codebase to "D:\jnlp-test2". Also copy the JNLP and the jar to that directory.
        4. Run the application from the desktop shortcut
          4.1 - tässä vaiheessa pitäisi cachen JNLP olla päivittynyt
        5. Poistaan D:\jnlp-test -hakemisto

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        a) After step 4 I expect that the cached JNLP application (viewer from Control Panel -> Java -> ...) should be updated to contain the new content (new codebase)

        b) At step 5 my application should work fine from the new distribution location
        ACTUAL -
        a) My cached JNLP file still contains the old content (at my example codebase="file:/D:/jnlp-test/")

        b) The problem crashes while trying to access the old location

        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        Unable to launch the application

        Error: D:\jnlp-test\DynamicTreeDemo.jar (Määritettyä polkua ei löydy)
        --------------------------
        (Note that The error message is "The path can't be found" in Finnish)

        And:
        --------------------------
        java.io.FileNotFoundException: D:\jnlp-test\DynamicTreeDemo.jar (Määritettyä polkua ei löydy)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
        at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
        at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
        at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
        at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
        at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
        at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
        at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
        at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)



        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        I am using the Dynamic Tree demo jar from
        http://download.oracle.com/javase/tutorial/deployment/webstart/deploying.html ->
        http://download.oracle.com/javase/tutorialJWS/deployment/webstart/ex6/webstart_ComponentArch_DynamicTreeDemo/DynamicTreeDemo.jar


        My original JNLP file (step 1 & 2):

        <?xml version="1.0" encoding="UTF-8"?>
        <jnlp spec="1.6+"
                codebase="file:/D:/jnlp-test/"
                href="dynamictree-webstart.jnlp">
            <information>
                <title>Dynamic Tree Demo</title>
                <vendor>Dynamic Team</vendor>
        <shortcut online="true">
        <desktop/>
        </shortcut>
            </information>
            <resources>
                <!-- Application Resources -->
                <j2se version="1.6+"
                      href="http://java.sun.com/products/autodl/j2se"/>
                <jar href="DynamicTreeDemo.jar" main="true" />
            </resources>
            <application-desc
                 main-class="webstartComponentArch.DynamicTreeApplication">
             </application-desc>
        </jnlp>


        My modified JNLP file (step 3, codebase changed):

        <?xml version="1.0" encoding="UTF-8"?>
        <jnlp spec="1.6+"
                codebase="file:/D:/jnlp-test2/"
                href="dynamictree-webstart.jnlp">
            <information>
                <title>Dynamic Tree Demo</title>
                <vendor>Dynamic Team</vendor>
        <shortcut online="true">
        <desktop/>
        </shortcut>
            </information>
            <resources>
                <!-- Application Resources -->
                <j2se version="1.6+"
                      href="http://java.sun.com/products/autodl/j2se"/>
                <jar href="DynamicTreeDemo.jar" main="true" />
            </resources>
            <application-desc
                 main-class="webstartComponentArch.DynamicTreeApplication">
             </application-desc>
        </jnlp>


        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        According to http://www.coderanch.com/t/528570/JNLP-Web-Start/java/Do-jnlp-file-updates-itself#2455103 this problem seems to happen only when the JWS cache path contains whitespace so changing the cache path should work.

        (Unfortunately this makes the "easy installation" with JWS just a dream)

        Release Regression From : 6u21
        The above release value was the last known release where this
        bug was not reproducible. Since then there has been a regression.

              herrick Andy Herrick (Inactive)
              ndcosta Nelson Dcosta (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: