Как изменить ограничение по умолчанию maxOccurs в Spring-WS версии 2.4.4 или выше? - PullRequest
0 голосов
/ 06 июня 2019

После обновления 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

Как изменить синтаксический анализатор так, чтобы он принимал более высокие значения maxOccurs, чем 5000, в моем XSD с Spring-XML версии 2.4.4 или выше?

Я попытался использовать 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;
}

1 Ответ

0 голосов
/ 18 июля 2019

Я попытался установить системное свойство в неправильном месте. Поскольку мы используем JBoss, мне пришлось добавить JbossSystemPropertySpec с name = "jdk.xml.maxOccurLimit" в конфигурацию xldeploy-maven-plugin в нашем pom.

...