Кэш сервера Infinispan меняет кодировку 'application/x-jboss-marshalling' на 'application/x-protostream'

В настоящее время я настроил свой контейнер кеша в JBoss 7.4 standalone.xml и удаленный сервер ISPN, работающий на localhost. Все было хорошо, пока не выдает ошибку:

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 Cache:

{"распределенный-кеш": {"режим": "СИНХРОНИЗАЦИЯ", "владельцы": 2, "кодировка": {"ключ": {"тип-носителя": "приложение / х-протопоток"}, "значение" : {"media-type": "application / x-protostream"}}, "expiration": {"lifespan": 5000, "max-idle": 1000}, "statistics": true}}

Примечание: я не хочу менять кодировку кеша, потому что веб-консоль infinispan перестает работать

1 ответ

Ошибка говорит о том, что кеш клиента имеет тип носителя application/x-jboss-marshalling, и вы хотите вместо этого.

Глядя на код WildFly 23.x, он будет использовать (и тип носителя application/x-protostream) если приложение имеет SerializationContextInitializerреализация в своем пути к классам.

Даже если вы храните в кеше только строки и примитивы, вам все равно придется писать интерфейс и аннотировать его с помощью @AutoProtoSchemaBuilderза RemoteCacheContainerConfigurationServiceConfiguratorвыбирать .

В WildFly 24.x механизм автоопределения изменен и выбирается, если атрибут модулей включает 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вручную.

Другие вопросы по тегам