Java Web Start всегда кэширует файл JNLP в Windows XP

В моей компании мы используем Java Web Start для распространения клиентского программного обеспечения среди клиентов. Они используют разные версии Windows: XP, Vista и 7.

В прошлом мы развертывали версию через JWS с минимальными проблемами. Наш последний выпуск включает в себя несколько изменений файлов, некоторые jar-файлы исчезли, другие появились и т. Д.

Мы обнаружили, что обновление на машинах с Windows XP не удается, потому что JWS все еще пытается найти файлы jar, которые больше не доступны на веб-сервере. . Я проверил журнал своего HTTP-сервера, и к файлу JNLP никогда не получают доступ с компьютеров XP во время запуска приложения. Если я попробую то же самое в Vista или Windows 7, все будет работать нормально, JWS получит дескриптор JNLP и загрузит различия, когда доступно обновление.Таким образом, на машинах XP обновляются только известные файлы jar, и JWS выдает ошибку, если не находит чего-либо из кэшированного набора файлов JNLP.

Я написал сервлет, который вручную генерирует файл JNLP. Я использую следующую конфигурацию заголовка в моем коде сервлета.

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");

Это делает файл JNLP всегда устаревшим, что должно вызывать повторную проверку файла каждый раз, когда клиент запускается через JWS. Я даже могу увидеть эту дату в средстве просмотра кеша на XP:

Cache Viewer

Я обнаружил, что проблема никогда не решается по этому поводу на сайте отчетов об ошибках Oracle: Идентификатор ошибки: 6189106 Только что протестировал то же самое с Java7 в Windows XP но эта проблема все еще существует. Но только на XP из-за пробелов в пути к кешу развертывания (вы знаете, «Документы и настройки»). Кто-то там говорит, что если я изменю путь кэша развертывания на что-то, в котором нет пробелов, это решит проблему. Что ж, это не актуальное решение, потому что пользователи вряд ли когда-либо могут писать в другие места, кроме своего профиля.

Поскольку эта ошибка существует уже очень долго, я думаю, нужно какое-то обходное решение. Я не люблю каждый раз просить клиента очистить кеш Java и переустановить приложение из Интернета. Мы хотели бы перейти к более быстрому циклу выпуска в будущем, что сделает его еще хуже. Надеюсь, у кого-то есть хорошая идея для этого. : |

8
задан NagyI 28 November 2011 в 13:21
поделиться