0

我目前在 JBoss 7.4 Standalone.xml 中配置了我的缓存容器,并在 localhost 上运行了 IPN 远程服务器。一切都很好,直到它抛出错误:

ISPN000492:在 'application/x-jboss-marshalling' 到 'application/x-protostream' 之间找不到转码器

独立的.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>

IPN 缓存配置:

{“分布式缓存”:{“模式”:“SYNC”,“所有者”:2,“编码”:{“键”:{“媒体类型”:“应用程序/x-protostream”},“值” : { "media-type": "application/x-protostream" } }, "expiration": { "lifespan": 5000, "max-idle": 1000 }, "statistics": true } }

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

4

1 回答 1

0

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

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

即使你只在缓存中存储字符串和原语,你仍然需要编写一个接口并使用@AutoProtoSchemaBuilderfor RemoteCacheContainerConfigurationServiceConfiguratorto choose对其进行注释ProtoStreamMarshaller

在 WildFly 24.x 中,自动检测机制发生了变化,ProtoStreamMarshaller如果 modules 属性包括org.wildfly.clustering.web.hotrod,则自动检测机制会被选中,因此<remote-cache-container modules="org.wildfly.clustering.web.hotrod">也可能在 23.x 上工作。

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

于 2022-01-17T09:49:40.570 回答