2.14. hot Rod Java Client Marshalling


热 Rod 是一种二进制 TCP 协议,要求您将 Java 对象转换为二进制格式,以便可以通过线路或存储到磁盘传输它们。

默认情况下,Data Grid 使用 ProtoStream API 将 Java 对象编码并解码为协议缓冲器(Protobuf);语言中立、向后兼容的格式。但是,您也可以实施并使用自定义 marshallers。

2.14.1. 配置 SerializationContextInitializer 实现

您可以将 ProtoStream SerializationContextInitializer 接口的实现添加到 Hot Rod 客户端配置,以便 Data Grid marshalls 自定义 Java 对象。

流程

  • SerializationContextInitializer 实现添加到 Hot Rod 客户端配置中,如下所示:

hotrod-client.properties

infinispan.client.hotrod.context-initializers=org.infinispan.example.LibraryInitializerImpl,org.infinispan.example.AnotherExampleSciImpl
Copy to Clipboard Toggle word wrap

编程配置

ConfigurationBuilder builder = new ConfigurationBuilder();
builder
      .addServer()
      .host("127.0.0.1")
      .port(11222)
      .addContextInitializers(new LibraryInitializerImpl(), new AnotherExampleSciImpl());
RemoteCacheManager rcm = new RemoteCacheManager(builder.build());
Copy to Clipboard Toggle word wrap

2.14.2. 配置自定义 Marshallers

将 Hot Rod 客户端配置为使用自定义 marshallers。

流程

  1. 实施 org.infinispan.commons.marshall.Marshaller 接口。
  2. 在 Hot Rod 客户端配置中指定您的类的完全限定名称。
  3. 将您的 Java 类添加到 Data Grid deserialization whitelist 中。

    在以下示例中,只允许带有 PersonEmployee 的完全限定名称的类:

    ConfigurationBuilder clientBuilder = new ConfigurationBuilder();
    clientBuilder.marshaller("org.infinispan.example.marshall.CustomMarshaller")
      .addJavaSerialWhiteList(".*Person.*", ".*Employee.*");
      ...
    Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部