Почему Java Web Start перезагружает банки из JBoss? - PullRequest
15 голосов
/ 29 ноября 2011

Мы только что обнаружили, что каждый раз, когда мы перезапускаем JBoss, все наши клиенты Java Web Start перезагружают все свои jar-файлы вместо повторного использования кэшированных jar-файлов, даже если наше приложение не изменилось.

Из того, что яЯ видел в Интернете, Java Web Start делает HTTP HEAD, чтобы решить, стоит ли загружать банку.Поэтому я запустил HTTP HEAD для всех jar-файлов в нашем приложении и обнаружил, что после перезапуска JBoss изменилось время изменения всех jar-файлов!

Почему это так и как я могу это исправить?Банки внутри моего архива приложений не изменились вообще.Насколько я могу судить, JBoss использует время запуска или время развертывания в качестве измененного времени.Это полностью нарушает способность Java Web Start использовать кэшированные файлы jar из предыдущих запусков, если я правильно понимаю.

Мы используем JBoss 6, если это проблема.Ранее мы использовали JBoss 4. Я хочу проверить, не возникла ли у нас проблема с JBoss 4, но теперь у нас так много зависимостей от более нового JBoss, что для выполнения этого теста потребуется определенная работа.

Ответы [ 3 ]

3 голосов
/ 02 декабря 2011

Попробуйте развернуть свое приложение как разорванное веб-приложение вместо файла WAR.

Это может помешать JBoss распаковать приложение и потенциально испортить даты модификации.

Вам придется обрабатывать обновления вашего приложения таким образом, чтобы сохранять даты изменений, например, rsync, но это может быть проще, чем понижение или исправление JBoss.

2 голосов
/ 02 декабря 2011

Похоже, VFSUtils не поддерживает lastModifiedDate файла при монтировании файловой системы в каталог tmp при запуске сервера.Вы можете исправить методы копирования в этом классе, чтобы попытаться установить временную метку нового файла на основе значений из физического файла.

В ответ на комментарий Чаббарда: проблема не возникает с Tomcat (tomcat 7.0.21, если быть точным).

0 голосов
/ 01 февраля 2012

Существует проблема (https://issues.jboss.org/browse/JBVFS-177), созданная для VFSUtils.unzip (), которая не сохраняет метки времени при развертывании (все еще применимо к JBoss 6.1).

Поскольку проблема связана с методом распаковки, решение бладибла может действительно работать.

Другой способ - использовать Java Web Start с версией на основе (модификация jnlp с помощью versionEnabled и создание version.xml).

...