如何正确实现持久性CookieStore而无需反思?

时间:2019-04-03 13:27:36

标签: java cookies

默认情况下,JRE提供CookieStore在内存中的实现,使CookieManager可以在运行时保存HttpCookies。 最终,即使在JVM关闭之后,也希望保留cookie和会话。

cookie管理器文档指出:

  

CookieStore是存储任何接受的HTTP cookie的地方。   如果创建时未指定,则CookieManager实例将使用   内部内存实现。 或者用户可以实施一个并告诉   CookieManager即可使用

无法对HTTPCookie进行序列化而不进行反射,因为maxAge字段是一个持续时间,用于定义cookie自创建以来的生存时间(以秒为单位)。该值仅与无法通过任何getter方法访问的对象的专用whenCreated字段结合使用才有意义。 到目前为止,我发现的每个解决方案都忽略了这一事实,并且被打破了。

我们可以实现自己的CookieHandler,并用我们自己的HttpCookie实例替换默认的SerializedHttpCookie,但是HttpCookie类本身被定义为final,因此我们可以不能扩展它并遵守接口合同。

到目前为止,唯一的“有效”解决方案是扩展CookieHandler并创建映射以分别节省创建时间。但这只是骇客行为,也是使所有引用保持同步的噩梦。

“用户”如何实现无反射的持久性cookie存储?

Tldr :Jdk9 +不喜欢反思。没有它,就无法序列化HttpCookies。您如何持久保存cookie?

0 个答案:

没有答案