DateTimeZone 和 Stub 子类

发布于 2025-01-06 13:13:07 字数 4126 浏览 4 评论 0原文

org.joda.time.DateTimeZone 具有用于序列化的嵌套类 Stub。
有人知道它是如何工作的吗?

我正在使用 Hibernate UserType 作为 joda-DateTime。当 hibernate 序列化我的对象时,我从 Stub.readResolve() 方法中得到异常。

日志

Caused by: net.sf.ehcache.CacheException: When configured copyOnRead or copyOnWrite, a Store will only accept Serializable values
        at net.sf.ehcache.store.compound.SerializationCopyStrategy.copy(SerializationCopyStrategy.java:47)
        at net.sf.ehcache.store.compound.Segment.potentiallyCopy(Segment.java:176)
        at net.sf.ehcache.store.compound.Segment.decode(Segment.java:170)
        at net.sf.ehcache.store.compound.Segment.get(Segment.java:206)
        at net.sf.ehcache.store.compound.CompoundStore.get(CompoundStore.java:156)
        at net.sf.ehcache.store.compound.CompoundStore.getQuiet(CompoundStore.java:163)
        at net.sf.ehcache.Cache.searchInStoreWithoutStats(Cache.java:1718)
        at net.sf.ehcache.Cache.get(Cache.java:1375)
        at net.sf.ehcache.Cache.get(Cache.java:1335)
        at com.softcomputer.softlab.persistence.cache.EhCacher.getFromCache(EhCacher.java:187)
        at com.softcomputer.softlab.persistence.cache.EhCacher.getElement(EhCacher.java:110)
        at com.softcomputer.softlab.persistence.cache.JpaCache$JpaLoader.getElement(JpaCache.java:85)
        at com.softcomputer.softlab.persistence.cache.EntityListCache.getEntities(EntityListCache.java:147)
        at com.softcomputer.softlab.repo.core.CannedMessageRepo.findById(CannedMessageRepo.java:65)
.............
        ... 148 more
Caused by: java.lang.IllegalArgumentException: The datetime zone id 'WET-2WET' is not recognised
        at org.joda.time.DateTimeZone.forID(DateTimeZone.java:215)
        at org.joda.time.DateTimeZone$Stub.readResolve(DateTimeZone.java:1207)
....
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1131)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1779)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:365)
        at org.joda.time.chrono.ISOChronology$Stub.readObject(ISOChronology.java:231)
....
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1044)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:494)
        at net.sf.ehcache.Element.readObject(Element.java:796)
....
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1044)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:365)
        at net.sf.ehcache.store.compound.SerializationCopyStrategy.copy(SerializationCopyStrategy.java:45)
        ... 174 more   

org.joda.time.DateTimeZone has nested class Stub that it using for serialization.
Somobody knows how is it work?

I am using Hibernate UserType for joda-DateTime. And when hibernate serialize my objects, I get exception from Stub.readResolve() method.

Log

Caused by: net.sf.ehcache.CacheException: When configured copyOnRead or copyOnWrite, a Store will only accept Serializable values
        at net.sf.ehcache.store.compound.SerializationCopyStrategy.copy(SerializationCopyStrategy.java:47)
        at net.sf.ehcache.store.compound.Segment.potentiallyCopy(Segment.java:176)
        at net.sf.ehcache.store.compound.Segment.decode(Segment.java:170)
        at net.sf.ehcache.store.compound.Segment.get(Segment.java:206)
        at net.sf.ehcache.store.compound.CompoundStore.get(CompoundStore.java:156)
        at net.sf.ehcache.store.compound.CompoundStore.getQuiet(CompoundStore.java:163)
        at net.sf.ehcache.Cache.searchInStoreWithoutStats(Cache.java:1718)
        at net.sf.ehcache.Cache.get(Cache.java:1375)
        at net.sf.ehcache.Cache.get(Cache.java:1335)
        at com.softcomputer.softlab.persistence.cache.EhCacher.getFromCache(EhCacher.java:187)
        at com.softcomputer.softlab.persistence.cache.EhCacher.getElement(EhCacher.java:110)
        at com.softcomputer.softlab.persistence.cache.JpaCache$JpaLoader.getElement(JpaCache.java:85)
        at com.softcomputer.softlab.persistence.cache.EntityListCache.getEntities(EntityListCache.java:147)
        at com.softcomputer.softlab.repo.core.CannedMessageRepo.findById(CannedMessageRepo.java:65)
.............
        ... 148 more
Caused by: java.lang.IllegalArgumentException: The datetime zone id 'WET-2WET' is not recognised
        at org.joda.time.DateTimeZone.forID(DateTimeZone.java:215)
        at org.joda.time.DateTimeZone$Stub.readResolve(DateTimeZone.java:1207)
....
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1131)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1779)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:365)
        at org.joda.time.chrono.ISOChronology$Stub.readObject(ISOChronology.java:231)
....
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1044)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
        at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:494)
        at net.sf.ehcache.Element.readObject(Element.java:796)
....
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1044)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:365)
        at net.sf.ehcache.store.compound.SerializationCopyStrategy.copy(SerializationCopyStrategy.java:45)
        ... 174 more   

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傻比既视感 2025-01-13 13:13:07

我为 DateTimeZone 类编写了自己的 Provider。这很有帮助

I wrote my own Provider for class DateTimeZone. It was helpful

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文