【发布时间】:2010-11-13 11:58:23
【问题描述】:
我正在使用 Tangosol Coherence v3.2.2b371。我可以通过 NamedCache api 缓存没有实现 Serializable 的对象吗?或者这取决于配置?
编辑:为澄清起见,我正在尝试缓存已编译的 javax.xml.xpath.XPathExpression 对象。
【问题讨论】:
标签: java caching oracle-coherence
我正在使用 Tangosol Coherence v3.2.2b371。我可以通过 NamedCache api 缓存没有实现 Serializable 的对象吗?或者这取决于配置?
编辑:为澄清起见,我正在尝试缓存已编译的 javax.xml.xpath.XPathExpression 对象。
【问题讨论】:
标签: java caching oracle-coherence
要将对象存储在缓存中,它必须是可序列化的,但不必实现可序列化。具体来说,它可以使用POF,它在时间和内存上都比Serializable 更高效。
POF 确实需要一些额外的配置,这在我链接到的文章中有所描述。
【讨论】:
我猜测(只是猜测)答案是否定的。但是,请查看 PortableObject 接口。这应该是 java.io.Serializable 的替代方案,但出于性能原因。你应该检查它是否可以用来替换Serializable接口。
【讨论】:
从 3.4 开始,Coherence 可以缓存不可序列化但支持 POF(PortableObject 或具有已注册 PofSerializer 的对象)的对象。
在 POF(或任何其他自定义序列化器)不能用作存储(在支持映射内)和集群内的传输格式(在 TCMP 协议上)之前,它仅用作传输协议TCP*扩展。
【讨论】:
这取决于配置。如果您需要存储不支持序列化的对象,则需要有一个 com.tangosol.io.Serializer 实现,该实现可以代表不可序列化的对象进行序列化。您可能会发现,对于常见情况,例如已经支持此功能。一个 PofSerializer。
【讨论】: