将 Spring Boot 1.5.18 更新到更高版本后,出现以下错误:
不支持:http://javax.xml.XMLConstants/property/accessExternalDTD
经过一番调查,我发现这个问题是从 Spring-XML 2.4.4 开始的。
我在 https://access.redhat.com/solutions/1410603 的帮助下解决了这个问题,但之后我收到以下错误:
org.springframework.xml.validation.XmlValidationException:无法创建架构:解析器的当前配置不允许将 maxOccurs 属性值设置为大于值 5.000
如何在使用 Spring-XML 版本 2.4.4 或更高版本的 XSD 中更改解析器以接受高于 5000 的 maxOccurs 值?
我尝试使用 System.setProperty("jdk.xml.maxOccurLimit", "XXXXX") 并尝试设置属性或属性,如https://docs.oracle.com/javase/tutorial/jaxp/limits/using.html
这是产生异常的 bean:
@Bean
public PayloadValidatingEndpointInterceptor payloadValidatingEndpointInterceptor() {
PayloadValidatingEndpointInterceptor payloadValidatingEndpointInterceptor = new PayloadValidatingEndpointInterceptor();
payloadValidatingEndpointInterceptor.setValidateRequest(true);
payloadValidatingEndpointInterceptor.setValidateResponse(true);
payloadValidatingEndpointInterceptor.setXsdSchema(schema());
return payloadValidatingEndpointInterceptor;
}
最佳答案
我尝试将系统属性设置在错误的位置。因为我们使用的是 JBoss,所以我必须将 name="jdk.xml.maxOccurLimit"的 JbossSystemPropertySpec 添加到 pom 中 xldeploy-maven-plugin 的配置中。
关于java - 如何更改 Spring-WS 2.4.4 或更高版本中 maxOccurs 的默认限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480313/