第 3 章 使用替代和自定义 marshaller 实现
Data Grid 建议您将基于 Protobuf 的 marshalling 与 ProtoStream marshaller 搭配使用,以便您可以利用 Ickle 查询并使用 Data Grid CLI 和控制台。但是,如果需要,您可以使用替代的 marshallers 或自定义 marshaller 实现。
3.1. 允许对 Java 类进行反序列化
为了安全起见,Data Grid 不允许反序列化任意 Java 类。如果您使用 JavaSerializationMarshaller
或 GenericJBossMarshaller
,您必须将 Java 类添加到反序列化允许列表中。
注意
反序列化允许列表应用到缓存管理器,因此您的 Java 类可以被所有缓存反序列化。
流程
- 将 Java 类添加到 Data Grid 配置或系统属性中的 deserialization allow 列表中。
声明
<infinispan> <cache-container> <serialization version="1.0" marshaller="org.infinispan.marshall.TestObjectStreamMarshaller"> <allow-list> <class>org.infinispan.test.data.Person</class> <regex>org.infinispan.test.data.*</regex> </allow-list> </serialization> </cache-container> </infinispan>
系统属性
// Specify a comma-separated list of fully qualified class names -Dinfinispan.deserialization.allowlist.classes=java.time.Instant,com.myclass.Entity // Specify a regular expression to match classes -Dinfinispan.deserialization.allowlist.regexps=.*