我正在将我的微服务从jdk8迁移到jdk17。作为迁移的一部分,spring cloud和spring Boot 依赖项已经从2.0更新到3.1。
我有一个soap客户端可以从rest API访问,soap客户端是使用Apache CXF和crypto构建的。我面临着soap客户端调用的问题,因为客户端没有使用CXF生成的代码调用服务。
当jvm从8迁移到17时,CXF是否需要更改?
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>target/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption> <wsdl>/src/main/resources/wsdl/Test.wsdl</wsdl> <wsdlLocation>classpath:wsdl/Test.wsdl</wsdlLocation>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>`
1条答案
按热度按时间myzjeezk1#
我能够确定soap客户端失败的原因。Apache CXF显式地需要jaxws-rt或jax-ws-ri依赖项,以便在JDK 11之后进行soap调用。在JDK 11之前,Apache CXF提供了jaxws类(HttpClientTransport)作为CXF依赖项的一部分。
这个问题的解决方案是在运行时包含jaxws-rt和jaxws-ri依赖项,这解决了我的问题。