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

问题描述 投票:4回答:4

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


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

java caching oracle-coherence
4个回答
3
投票

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

POF确实需要一些额外的配置,这在我链接的文章中有所描述。


1
投票

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

POF


1
投票

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

在此之前,POF(或任何其他自定义串行器)不能用作存储(在支持映射内)和集群内的传输格式(在TCMP协议上),它仅用作TCP * Extend中的传输协议。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.