Кэш сервера 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
вручную.