Служба SOAP Spring boot, запущенная в docker, не находит класс ExtensibilityElement

#java #spring-boot #docker #soap #wsdl

#java #spring-boot #docker #soap #wsdl

Вопрос:

Я настраиваю службу SOAP с помощью spring-boot и запускаю ее в контейнере docker. Когда я запускаю jar самостоятельно, все работает нормально, но когда я пытаюсь запустить его в контейнере docker, он не инициализируется и выдает эту ошибку:

 Failed to instantiate [org.springframework.ws.wsdl.wsdl11.Wsdl11Definition]: Factory method 'defaultWsdl11Definition' threw exception; 
nested exception is java.lang.NoClassDefFoundError: javax/wsdl/extensions/ExtensibilityElement
  

Я уже пробую разные образы, также создаю базовый образ docker и устанавливаю oracle jdk вручную.

Вы можете найти точный код здесь и попробовать самостоятельно.

Для запуска приложения:

 gradle build
java -jar build/libs/service-0.0.1-SNAPSHOT.jar
  

Для создания образа docker:

 docker build -t soap:service --build-arg JAR_FILE=./build/libs/service-0.0.1-SNAPSHOT.jar .
  

Для запуска образа docker:

 docker run soap:service
  

Приветствуется любая помощь.

Ответ №1:

Если кто-то хочет знать, проблема заключалась в том, что библиотека wsdl4j была настроена только на compileOnly и путем изменения ее для компиляции библиотека была представлена в финальном jar.

Для получения дополнительной информации посетитеhttps://community.liferay.com/blogs/-/blogs/gradle-compile-vs-compileonly-vs-compileinclude