At my company, we use Java Web Start to distribute client software to clients. They use different versions of Windows: XP, Vista, and 7.
We deployed the version via JWS with minimal problems in the past. Our latest release includes several file changes, some banks are gone, others have appeared, etc.
We found that the update on computers running Windows XP fails because JWS is still trying to find jar files that are no longer available on the web server. I checked my HTTP server log and the JNLP file never gets access to XP computers when the application starts. If I try the same in Vista or Windows 7, everything will work fine, JWS retrieves the JNLP handle and loads the differences when an update is available. Thus, on XP computers, only known jar files are updated, and JWS throws an error if it does not find something from the cached set of JNLP files.
I wrote a servlet that manually creates a JNLP file. I use the following header configuration in my servlet code.
response.setDateHeader("Last-Modified", lastModification); // IE won't download JNLP file if Cache-Control header presents //response.setHeader("Cache-Control", "no-cache, must-revalidate"); response.setHeader("Expires", "Mon, 26 Jul 1990 05:00:00 GMT");
This makes the JNLP file always obsolete, which should trigger a re-check of the file every time the client starts through JWS. I even see this date in the cache viewer in XP:

I found a problem that was never resolved on the Oracle bugreport website: Error ID: 6189106 Just tested the same with Java7 in Windows XP, but this problem still exists. But only on XP because of the space characters in the path to the deployment cache ("Documents and Settings" you know). Someone says that if I change the path to the deployment cache to something that does not contain spaces, it will solve the problem. Well, this is not a real solution, because users are unlikely to ever write in places other than their profile.
Since this error has existed for such a long time, I think there should be some workaround. I donβt like to tell the client every time to clear the Java cache and reinstall the application from the Internet. We would like to move on to a faster release cycle in the future, which will make it even more serious. Hope someone has a good idea .: |
java java-web-start distribution
NagyI
source share