В моей компании мы используем 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:
На сайте отчетов об ошибках Oracle я никогда не решал эту проблему: Идентификатор ошибки: 6189106 Только что протестировал то же самое с Java7 на Windows XP, но эта проблема все еще существует.Но только в XP из-за пробелов в пути кеша развертывания («Документы и настройки», вы знаете).Там кто-то говорит, что если я изменю путь кеша развертывания на что-то без пробелов, это решит проблему.Ну, это нереальное решение, потому что пользователи вряд ли когда-либо смогут писать в места, отличные от их профиля.
Поскольку эта ошибка существует в течение столь длительного времени, я думаю, что должен быть какой-то обходной путь.Я не люблю каждый раз рассказывать клиенту, чтобы он очищал кеш Java и переустанавливал приложение из Интернета.Мы хотели бы перейти к более быстрому циклу выпуска в будущем, который сделает это еще хуже.Я надеюсь, у кого-то есть хорошая идея для этого.: |