У меня есть работающее java решение, основанное на Apache CXF, которое потребляет некоторую SOAP услугу. И исполняемый, и затененный jar java прекрасно работают локально. Однако, когда я попытался развернуть то же решение в docker, код
Исключение в потоке "main" javax. xml .ws.WebServiceException: org. apache .cxf.service.factory.ServiceConstructionException: Не удалось создать службу. в орг. apache .cxf.jaxws.ServiceImpl.initialize (ServiceImpl. java: 162) в орг. apache .cxf.jaxws.ServiceImpl. (ServiceImpl. java: 128) в орг. apache .cxf.jaxws.spi.ProviderImpl.createServiceDelegate (ProviderImpl. java: 82) в javax. xml .ws.Service. (Сервис. java: 77) в com.flightview.BatchService. (BatchService. java: 48) at de.lh.hixca.oag.ingestionraw.OAGIngestionMainClass.main (OAGIngestionMainClass. java: 57) Причина: org. apache .cxf.service.factory.ServiceConstructionException: Не удалось создать службу , в org. apache .cxf.wsdl11.WSDLServiceFactory. (WSDLServiceFactory. java: 87) в org. apache .cxf.jaxws.ServiceImpl.initializePorts (ServiceImpl. java: 217) в org. * 1041. * .cxf.jaxws.ServiceImpl.initialize (ServiceImpl. java: 160) ... еще 5 причин: javax.wsdl.WSDLException: WSDLException: faultCode = PARSER_ERROR: проблема с анализом файла: / usr / src / app / src / main / resources / jks / oag_wsdl.wsdl '.: java .io.FileNotFoundException: /usr/src/app/src/main/resources/jks/oag_wsdl.wsdl (нет такого файла или каталога) в com. ibm.wsdl. xml .WSDLReaderImpl.getDocument (WSDLReaderImpl. java: 2198) по адресу com.ibm.wsdl. xml .WSDLReaderImpl.readWSDL (WSDLReaderImpl. java: 2390). xml .WSDLReaderImpl.readWSDL (WSDLReaderImpl. java: 2422) в орг. apache .cxf.wsdl11.WSDLManagerImpl.loadDefinition (WSDLManagerImpl. java: 266) фн. Org. WSDLManagerImpl.getDefinition (WSDLManagerImpl. java: 165) в орг. apache .cxf.wsdl11.WSDLServiceFactory. (WSDLServiceFactory. java: 85) ... еще 7 причин: java .io.Fil eNotFoundException: /usr/src/app/src/main/resources/jks/oag_wsdl.wsdl (нет такого файла или каталога) в java .io.FileInputStream.open0 (собственный метод) в java .io.FileInputStream. открыть (FileInputStream. java: 195) в java .io.FileInputStream. (FileInputStream. java: 138) в java .io.FileInputStream. (FileInputStream. java: 93) на солнце. net. www.protocol.file.FileURLConnection.connect (FileURLConnection. java: 90) на солнце. net. www.protocol.file.FileURLConnection.getInputStream (FileURLConnection. java: 188) на com.sun.org. apache .xerces.internal.impl .XMLEntityManager.setupCurrentEntity (XMLEntityManager. java: 623) на com.sun.org. apache .xerces.internal.impl.XMLVersionDetector.determineDocVersion (XMLVersionDetector. java: 148) на com. 1072 * .xerces.internal.parsers.XML11Configuration.parse (XML11Configuration. java: 806) на com.sun.org. apache .xerces.internal.parsers.XML11Configuration.parse (XML11Configuration. java: 771) на com.sun.org. apache .xerces.internal.parsers.XMLParser.parse (XMLParser. java: 141) на com.sun.org. apache .xerces.internal.parsers.DOMParser.parse ( DOM Parser. java: 243) на com.sun.org. apache .xerces.internal.jaxp.DocumentBuilderImpl.parse (DocumentBuilderImpl. java: 339) на com.ibm.wsdl. xml .WSDLReaderImpl. getDocument (WSDLReaderImpl. java: 2188) ... еще 12
Мой пример pom. xml выглядит следующим образом
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-bundle -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-compatible</artifactId>
<version>3.3.6</version>
</dependency>
<!--some other dependencies-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>my.correct.main.class</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--shadded plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- transformers for CXF (see http://stackoverflow.com/a/9069435/61298) -->
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.sun.tools.xjc.Plugin</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/cxf/cxf.extension</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/extensions.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/cxf/extensions.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/cxf/bus-extensions.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/wsdl.plugin.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/tools.service.validator.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/cxf/java2wsbeans.xml</resource>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/jks/oag_wsdl.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Файл Docker, который я я использую для docker сборка:
#
# Build stage
#
FROM maven:3.5-jdk-8 AS build
#copying .m2 settings.xml for profile
COPY settings.xml /root/.m2/
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
ENV http_proxy "http://<username>:<password>@<host>:<port>"
ENV https_proxy "http://<username>:<password>@<host>:<port>"
RUN apt-get update \
&& apt-get install --no-install-recommends -y openjfx \
&& apt-get clean
RUN mvn -f /usr/src/app/pom.xml clean package
#
# Package stage
FROM gcr.io/distroless/java
COPY --from=build /usr/src/app/target/ingestion-oag-using-soap-1.0-SNAPSHOT.jar /usr/app/ingestion-oag-using-soap-1.0-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/app/ingestion-oag-using-soap-1.0-SNAPSHOT.jar"]
Есть ли проблема с моим pom. xml для wsdl2 java цель не в состоянии распознать полный путь oag_wsdl.wsdl
, который хранится в папка ресурсов? Если так, как я могу настроить свой докер-файл для того же самого?