如何通过XML配置为Infinispan所有缓存全局设置序列化允许类列表
Infinispan XML全局配置反序列化允许列表问题
通过org.infinispan:infinispan-spring-boot-starter-embedded集成使用Infinispan v12.1与Spring Boot v2.5.2时,常见的自定义类缓存场景需要将自定义类加入反序列化允许列表才能正常完成序列化/反序列化,该规则从Infinispan v10版本开始生效。
现有配置方式是通过infinispan.embedded.config-xml属性加载infinispan.xml配置文件。
核心问题
如何通过XML配置文件为所有缓存全局配置允许列表?
已排除的不符合需求方案
- 配置系统属性
infinispan.deserialization.allowlist.regexps:配置分散在XML和其他位置,且版本迭代如果修改属性名,只有运行时才能发现问题。 - 在每个
<cache-container><serialization><allow-list>节点下单独配置:相同规则需要在每个缓存下重复配置,维护成本高。
参考配置(Spring Boot Java实现)
@org.springframework.context.annotation.Configuration public class InfinispanConfiguration { @Bean public InfinispanGlobalConfigurationCustomizer globalCustomizer() { return builder -> builder.allowList().addRegexp("^org\\.mycompany\\."); } }
补充说明
GlobalConfiguration的Javadoc提及可通过XML的<default>节点读取配置,但v12.1版本XML已经不支持该节点。- 允许列表的正则匹配规则最好对点号做转义、并以
^开头匹配前缀,ClassAllowList底层使用Matcher#find()做匹配,逻辑如下:
boolean regexMatch = compiled.stream().anyMatch(p -> p.matcher(className).find());
推荐写法示例:
serializationAllowList.addRegexps("^java\\.util\\..*", "^org\\.springframework\\..*");
内容的提问来源于stack exchange,提问作者dma_k
相关产品推荐
相关产品推荐

