У меня есть приложение загрузки Spring Boot MVC, где я обслуживаю контент, упакованный в пакеты OSGi. Цель использования OSGi состоит в том, чтобы сделать эти пакеты контента полностью автономными и с возможностью «горячей» замены.Предотвращение Spring от попыток чтения старого потока ресурсов
Запросы сопоставляются для распределения ресурсов по URL-адресу.
Проблема, с которой я столкнулся, возникает, когда я заменяю пакет новым, на который будет указывать тот же URL-адрес, и запрос приходит для ресурса, который был отправлен из старого пакета.
Spring видит, что он уже возвратил ресурс для этого URL-адреса и поэтому пытается открыть поток для URL-адреса кэшированного пакета, который должен определить, когда ресурс был последним изменен, который теперь связан с отсутствующим в настоящее время пакетом и бросает IOException
.
Все, что я нашел до сих пор, связано с изменением политики кэширования на стороне клиента, а не внутреннего кеша Spring. Кроме того, попытка отключить кеш через spring.resource.chain.caching
или spring.resources.cache-period
не работает, поскольку Spring по-прежнему пытается определить последнюю измененную метку времени независимо.