我可以将 Infinispan 配置为在特定缓存上使用 JavaSerializationMarshaller() 并在其他缓存上使用 protobufs 吗?

Can I configure Infinispan to use JavaSerializationMarshaller() on a specific cache and use protobufs on other caches?

我正在尝试从 Infinispan 8.2.11.Final 升级到 Infinispan 10.1.8.Final。 Infinispan 现在默认使用协议缓冲区。 Infinispan 缓存由 Hibernate 使用,还包含一些应用程序对象。

我可以按如下方式设置全局编组器:

    holder.getGlobalConfigurationBuilder()
          .serialization()
          .marshaller( new JavaSerializationMarshaller() )
          .whiteList().addClasses( CLASSES );

但是,如果我这样做,则有必要将所有休眠 类(例如 org.hibernate.cache.internal.CacheKeyImplementation 和其他)列入白名单。

是否可以在用于应用程序对象的缓存上设置编组器,以便我可以继续对我的应用程序对象使用 Java 序列化,同时允许 Hibernate 使用 protobuf?

没有。编组器对所有缓存都是全局的。

您可以通过以下方式将 Hibernate 包添加到白名单中:

.whiteList().addRegexps("org\.hibernate.*");

在 Infinispan 文档中查看更多信息 here and here

offtopic: 最后一个稳定版本是 11.0.1.Final.