在AKS运行Quarkus CXF时出现WSDL FileNotFoundException
排查与解决AKS部署后WSDL文件找不到的问题
1. 确认WSDL是否被打包进镜像
- 检查Azure DevOps的Maven/Gradle构建任务,确保执行了
mvn package或gradle build这类完整打包命令,src/main/resources下的文件会被自动复制到构建产物的资源目录。 - 临时修改Dockerfile,添加
RUN ls -la /work/app/BOOT-INF/resources(Quarkus jar包镜像的默认资源路径)或对应原生镜像的资源路径,构建镜像后查看文件是否存在,确认是否是构建阶段遗漏了文件。
2. 修正代码中的WSDL加载路径
- 配置
quarkus.cxf.codegen.wsdl2java.includes = *.wsdl仅在构建时代码生成生效,运行时加载WSDL不能用构建代理的绝对路径/home/vsts/work/1/s/src/main/resources/checkVatService.wsdl——这个路径只存在于Azure DevOps的构建机器上。 - 代码中替换为类路径加载,比如
classpath:checkVatService.wsdl,Quarkus会自动从jar包的资源目录中读取。
3. 检查原生镜像构建的资源包含配置(如果用原生镜像)
- 如果是构建Quarkus原生镜像,需要在
application.properties中添加quarkus.native.resources.includes = *.wsdl,避免原生编译过程中把WSDL文件排除在外。
4. 验证构建产物的完整性
- 在Azure DevOps构建完成后,下载生成的jar包或镜像,本地解压jar包查看
BOOT-INF/resources目录是否有目标WSDL文件;如果是镜像,本地运行后进入容器内部检查文件是否存在。
内容的提问来源于stack exchange,提问作者thathashd
相关产品推荐
相关产品推荐

