Tangosol Coherence可以缓存不可序列化的对象吗?

时间:2009-07-23 18:15:25

标签: java caching oracle-coherence

我正在使用Tangosol Coherence v3.2.2b371。我可以通过 NamedCache api缓存未实现 Serializable 的对象吗?或者这取决于配置?


编辑:为了澄清,我正在尝试缓存已编译的 javax.xml.xpath.XPathExpression 对象。

4 个答案:

答案 0 :(得分:3)

要将对象存储在缓存中,它必须是可序列化的,但不必实现Serializable。具体来说,它可以使用POF,它比Serializable在时间和内存方面更有效。

POF确实需要一些额外的配置,我在链接的文章中对此进行了描述。

答案 1 :(得分:1)

我猜(只是猜测)答案是“不”。但是,请查看PortableObject接口。这应该是java.io.Serializable的替代品,但出于性能原因。您应该检查它是否可以用来替换Serializable接口。

PortableObject JavaDoc

答案 2 :(得分:1)

Coherence可以缓存非Serializable但可识别POF(PortableObject或具有已注册的PofSerializer的对象)以3.4开头的对象。

在该POF(或任何其他自定义序列化程序)无法用作存储(在支持映射内)和集群内的传输格式(在TCMP协议上)之前,它仅用作传输协议TCP *延长。

答案 3 :(得分:1)

这取决于配置。如果您需要存储不支持序列化的对象,则需要有一个com.tangosol.io.Serializer实现,它可以代表非序列化对象进行序列化。对于常见情况,您可能会发现,例如,一个PofSerializer。