Как исключить классы, созданные с помощью WSDL, из цикла перезапуска Spring-Devtools? - PullRequest
1 голос
/ 18 октября 2019

Когда я запускаю приложение Spring Boot с включенным Spring-Devtools и классами, сгенерированными из схемы WSDL, я получаю:

Caused by: java.lang.IllegalArgumentException: org.wsdl.WsdlServiceWs referenced from a method is not visible from class loader

У меня есть проект на основе Spring Boot с некоторыми изклассы, сгенерированные из файла WSDL с использованием плагина org.apache.cxf:cxf-codegen-plugin. Сгенерированные классы хранятся в каталоге target/generated/wsdl/**. Имя пакета сгенерированных классов отличается от имени пакета проекта.

Я попробовал несколько исключений из документации:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-devtools-restart-exclude

Но все мои попытки не увенчались успехом.

restart.exclude.wsdl=target/generated/wsdl
restart.exclude.wsdl=org.wsdl.*
restart.exclude.wsdl=**WsdlServiceWs.class

Я хочу, чтобы Spring-Devtools был включен, с включением org.wsdl. ** сгенерированных классов, исключенных из цикла перезапуска.

1 Ответ

1 голос
/ 18 октября 2019

Проблема заключалась в том, что я пытался использовать WsdlServiceWs, который фактически был интерфейсом, возвращаемым WsdlServiceWsService. В конфигурации был возвращен интерфейс WsdlServiceWs в виде компонента:

    ...

    @Bean
    public WsdlServiceWs wsdlService() {
        return new WsdlServiceWsService().getService();
    }

    ...

Я не думал, что это будет проблемой. Просто изменив bean-компонент следующим образом:

    ...

    @Bean
    public WsdlServiceWsService wsdlService() {
        return new WsdlServiceWsService();
    }

    ...

Сделал работу.


Edit:

Это решение только переместило вызов исключения из создания Bean-компонентафаза к фазе исполнения. Проблема до сих пор не решена.

...