По умолчанию JRE обеспечивает реализацию в памяти CookieStore , позволяющую CookieManager сохранять HttpCookies во время выполнения.В конечном итоге желательно сохранить файлы cookie и сеансы даже после завершения работы JVM.
Документация менеджера куки-файлов гласит:
CookieStore - это место, где хранится любой принятый куки-файл HTTP. Если не указано при создании, экземпляр CookieManager будет использовать внутреннюю памятьреализация. Или пользователь может реализовать его и указать CookieManager использовать его .
Сериализация HTTPCookie без отражения невозможна, поскольку поле maxAge
- это продолжительность, определяющая время жизни файлов cookie всекунд с момента создания.Это значение имеет смысл только в сочетании с приватным полем whenCreated
объекта, которое недоступно для любого метода получения.Каждое решение, которое я нашел до сих пор, игнорирует этот факт и не работает.
Мы могли бы реализовать наш собственный CookieHandler
и заменить взамен стандартное HttpCookie
на собственный экземпляр SerializedHttpCookie
, но класс HttpCookie
само по себе определено как окончательное, поэтому мы не можем расширять его и соблюдать контракт интерфейса.
Пока единственное «работающее» решение - это расширение CookieHandler и создание карты, чтобы отдельно экономить время создания.Но это просто хакерский и страшный сон для синхронизации всех ссылок.
Как «пользователь» может реализовать постоянное хранилище файлов cookie без размышлений?
Tldr : Jdk9 + не любит отражения.HttpCookies не может быть сериализован без него.Как вы постоянно сохраняете куки?