Java Web Start in JDK6 doesn't check time stamp of nested JNLP files. This is regression, since it works fine in JDK 5.
For example, if the application JNLP file looks like this:
<jnlp ...>
<resource>
<jar href="my-app.jar" main="true"/>
<extension href="http://some.where.com/my-library.jnlp"/>
</resource>
...
</jnlp>
the application JNLP file and the "some.where.com/my-library.jnlp" file will be cached. If the "some.where.com/my-library.jnlp" file is subsequently updated, the cache will not be re-validated, and the old version of the JNLP file will be used. This can cause the application to fail if the resources referred to by the old JNLP file are modified or removed.
We have set up a test case using Java 3D that you can use to diagnose the problem. You will need to copy the following .zip file to your server, unzip it, and modify the codebase in the four JNLP files as described below. Here is the pointer to the zip bundle:
http://download.java.net/media/java3d/webstart/prototype/cache-bug.zip
The directory structure is:
cache-bug/
early-access/
java3d-1.5.0.jnlp -- Java 3D 1.5.0 library JNLP file
java3d-1.5.1.jnlp -- Java 3D 1.5.1 library JNLP file
java3d-latest.jnlp -- actual JNLP extension file, a copy of 1.5.0 or 1.5.1
use-1.5.0 -- script to copy 1.5.0 to latest
use-1.5.1 -- script to copy 1.5.1 to latest
...
test/
QueryProperties.jnlp -- application JNLP file
HelloUniverse.jnlp -- another application JNLP file
...
After you have modified the codebase in QueryProperties.jnlp java3d-1.5.0.jnlp and java3d-1.5.1.jnlp (and optionally HelloUniverse.jnlp), you should do the following:
cd .../early-access
./use-1.5.0 # this will copy 1.5.0 to latest
javaws http://your.server.com/your-base-dir/cache-bug/test/QueryProperties.jnlp
You will see the following line at the top of the scrollable text window:
"j3d.version = 1.5.0 fcs (build8)"
If you then run the command "./use-1.5.1" from the early-access directory, which will update the java3d-latest.jnlp file, and rerun the QueryProperties demo, you should see the following:
"j3d.version = 1.5.1-beta2 (build5) 31 May 2007 14:01:07 PDT"
This works on JDK 5. You get the old version on JDK 6.