【问题标题】:Can Tangosol Coherence cache non-serializable objects?Tangosol Coherence 可以缓存不可序列化的对象吗?
【发布时间】:2010-11-13 11:58:23
【问题描述】:

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


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

【问题讨论】:

    标签: java caching oracle-coherence


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,您链接的 tangosol 文档指出 POF 以 Coherence 3.2 开头,而不是 3.4。
    • 你是对的。 POF 在 3.2 中引入。我确定了我的答案。我只使用过 3.4 和 3.5。
    【解决方案2】:

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

    PortableObject JavaDoc

    【讨论】:

      【解决方案3】:

      从 3.4 开始,Coherence 可以缓存不可序列化但支持 POF(PortableObject 或具有已注册 PofSerializer 的对象)的对象。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2013-02-19
          • 2018-03-29
          • 1970-01-01
          • 1970-01-01
          • 2014-10-15
          • 2013-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多