You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot应用从JDK1.8迁移至OpenJDK11后SOAP WebService异常求助

问题分析与解决方案方向

核心定位

迁移后SOAP WebService的问题本质是Spring Web Services(SWS)版本与JDK 11、JBoss EAP 7.4的兼容性不匹配,加上命名空间配置的版本映射错误导致的连锁异常。

具体处理步骤

1. 升级Spring Web Services依赖版本

JDK 11不支持SWS 2.x及以下版本,必须升级到3.0.0.RELEASE及以上的稳定版,同时匹配Spring Boot 2.3+版本(适配JDK 11)。检查pom.xml(或build.gradle):

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-core</artifactId>
    <version>3.1.4.RELEASE</version> <!-- 选用适配JDK11的最新稳定版 -->
</dependency>

2. 修正命名空间的完整配置

SWS 3.x版本统一使用xmlns:sws="http://www.springframework.org/schema/web-services"命名空间,需确保配置文件中所有相关标签都使用正确前缀,且schemaLocation对应正确:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sws="http://www.springframework.org/schema/web-services"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/web-services
           http://www.springframework.org/schema/web-services/web-services.xsd">

    <!-- 示例:用sws前缀配置WebService客户端 -->
    <sws:webservice-client id="myWebServiceClient"
                           wsdlDocumentUrl="classpath:wsdl/myService.wsdl"
                           serviceInterface="com.example.MyWebServiceInterface"/>
</beans>

禁止混合使用新旧命名空间,避免Spring容器解析冲突。

3. 解决JBoss EAP 7.4类加载冲突

JBoss EAP 7.4内置的WebService类可能与应用打包的SWS依赖冲突,需在jboss-deployment-structure.xml中配置类隔离:

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="javax.jws.api"/>
            <module name="org.jboss.ws.api"/>
        </exclusions>
        <dependencies>
            <module name="javax.xml.ws.api" export="true"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

确保应用优先使用自身打包的SWS类,而非容器提供的旧版本。

4. 补充JDK 11缺失的JAX-WS依赖

JDK 11移除了内置的java.xml.ws模块,需手动添加JAX-WS相关依赖:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.5</version>
</dependency>
<dependency>
    <groupId>javax.xml.ws</groupId>
    <artifactId>jaxws-api</artifactId>
    <version>2.3.1</version>
</dependency>

5. 定位启动时异常的具体原因

提取JBoss启动日志的异常栈,重点排查:

  • 类找不到异常:确认依赖是否完整打包,类加载顺序是否正确
  • 方法不存在异常:核对SWS版本与Spring Boot版本的兼容性
  • XML解析异常:检查命名空间的schemaLocation是否有效,xsd文件是否可访问

验证流程

  1. 先在本地JDK 11环境下启动应用,排除JBoss容器的影响
  2. 逐步添加容器配置,定位类加载冲突点
  3. 调用SOAP接口进行功能测试,确认请求/响应格式正常

内容的提问来源于stack exchange,提问作者Bharat Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:32:23