1.4. Marshalled Java 对象


Data Grid 将 marshalled Java 对象存储在缓存中作为字节数阵列。例如,以下是存储为内存中值的 Person 对象的简单表示:

value=[61 6c 61 6e 0a 70 61 72 74 72 69 64 67 65]

要将 marshalled 对象存储在缓存中,您应该使用 ProtoStream marshaller,除非存在严格的要求。例如,当将客户端应用程序从旧版本的 Data Grid 迁移时,您可能需要将 JBoss marshalling 替换为您的 Hot Rod Java 客户端。

Data Grid 使用以下介质类型将 marshalled Java 对象存储为字节数组:

  • application/x-protostream
  • application/x-jboss-marshalling
  • application/x-java-serialized-object
注意

当存储 unmarshalled Java 对象时,Data Grid 使用 equals ()hashCode () 的对象实现。当存储 marshalled 对象时,会将 marshalled 字节用于相等和散列化。

1.4.1. 客户端和 marshalled 对象

当您将 Hot Rod Java 客户端配置为使用 marshaller 时,您必须使用该 marshaller 的编码配置缓存。

每个 marshaller 都使用不同的介质类型来生成可传输到 Data Grid Server 的 byte[] 内容。从服务器读取时,客户端 marshaller 会执行相反的操作,使用介质类型从 byte[] 内容生成数据。

您的缓存编码必须与 Hot Rod 客户端 marshaller 兼容。例如,如果您将缓存编码配置为 application/x-protostream,您可以在客户端中使用 ProtoStream marshaller 来在该缓存中操作。但是,如果客户端 marshaller 使用 Data Grid 无法转换为 application/x-protostream 的编码,则数据网格会抛出错误消息。

如果您使用 JavaSerializationMarshallerGenericJBossMarshaller,您应该分别使用 application/x-java-serialized-objectapplication/x-jboss-marshalling 介质类型对缓存进行编码。

ProtoStream 到 JSON 转换

Data Grid 使用 application/x-protostream 介质类型编码的键和值转换为 application/json

这允许 REST 客户端在请求标头中包含 JSON 介质类型,并在使用 ProtoStream 编码的缓存上执行操作:

  • accept:用于读取操作的 application/json
  • content-Type: 用于写入操作的 application/json
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部