Infinispan 服务器缓存更改编码 'application/x-jboss-marshalling' 到 'application/x-protostream'

Infinispan server cache change encoding 'application/x-jboss-marshalling' to 'application/x-protostream'

我目前在 JBoss 7.4 standalone.xml 中配置我的缓存容器,在本地主机上配置 ISPN 远程服务器 运行。一切都很好,直到它抛出错误:

ISPN000492:无法在 'application/x-jboss-marshalling' 到 'application/x-protostream'

之间找到转码器

standalone.xml:

         <remote-cache-container name="remoteContainer" default-remote-cluster="data-grid-cluster">
            <property name="infinispan.client.hotrod.sasl_mechanism">SCRAM-SHA-512</property>
            <property name="infinispan.client.hotrod.auth_realm">default</property>
            <property name="infinispan.client.hotrod.auth_username">admin</property>
            <property name="infinispan.client.hotrod.auth_password">12345</property>
            <property name="infinispan.client.hotrod.client_intelligence">BASIC</property>
            <remote-clusters>
                <remote-cluster name="data-grid-cluster" socket-bindings="ispn1 ispn2"/>
            </remote-clusters>
        </remote-cache-container>

ISPN 缓存配置:

{ “分布式缓存”:{ “模式”:“同步”, “业主”:2, “编码”:{ “钥匙”: { “媒体类型”:“application/x-protostream” }, “价值”: { “媒体类型”:“application/x-protostream” } }, “到期”:{ “寿命”:5000, “最大空闲”:1000 }, “统计”:真实 } }

注意:我不想更改缓存编码,因为 infinispan 网络控制台停止工作

错误是说客户端缓存的媒体类型为 application/x-jboss-marshalling,而您需要 application/x-protostream

查看 WildFly 23.x 代码,如果应用程序在其类路径中有 SerializationContextInitializer 实现,它将使用 ProtoStreamMarshaller(和媒体类型 application/x-protostream)。

即使你只在缓存中存储字符串和基元,你仍然必须编写一个接口并用@AutoProtoSchemaBuilder注释它以便RemoteCacheContainerConfigurationServiceConfigurator选择ProtoStreamMarshaller

在 WildFly 24.x 中,自动检测机制发生变化,如果模块属性包含 org.wildfly.clustering.web.hotrod,则会选择 ProtoStreamMarshaller,因此 <remote-cache-container modules="org.wildfly.clustering.web.hotrod"> 也可能适用于 23.x.

在 Wildfly 24.x 中,您始终可以设置 <remote-cache-container marshaller="PROTOSTREAM"> 以手动选择 ProtoStreamMarshaller