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

WildFly27+JakartaEE10部署WebService成功,但JUnit测试失败求助

排查RuntimeModelerException:接口已加@WebService但测试时提示不存在

以下是几个大概率的排查方向:

1. 依赖包版本/冲突问题

  • 确保测试依赖使用Jakarta EE 10版本的JAX-WS相关包,而非旧的javax前缀包。比如pom.xml中应引入:
    <dependency>
        <groupId>jakarta.xml.ws</groupId>
        <artifactId>jakarta.xml.ws-api</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
    
  • 执行mvn dependency:tree查看依赖树,排查是否混入了旧版本的javax.xml.ws:jaxws-api(1.x/2.x版本),如果有,通过<exclusions>标签排除冲突依赖。
  • 优先使用Jakarta EE BOM统一管理版本,避免版本不一致:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>jakarta.platform</groupId>
                <artifactId>jakarta.jakartaee-bom</artifactId>
                <version>10.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

2. 注解导入错误

  • 检查AccountWSItf接口中的@WebService注解,必须是jakarta包下的版本,而非旧的javax包:
    // 正确导入
    import jakarta.jws.WebService;
    
    @WebService
    public interface AccountWSItf {
        // 接口方法
    }
    
    旧的javax.jws.WebService在Jakarta EE 10环境下不会被测试客户端识别。

3. 测试客户端API版本不匹配

  • 测试代码中使用的JAX-WS客户端类必须对应Jakarta版本,比如:
    import jakarta.xml.ws.Service;
    import java.net.URL;
    import org.junit.Test;
    
    public class AccountWSTest {
        @Test
        public void testServiceInvocation() throws Exception {
            URL wsdlUrl = new URL("http://localhost:8080/accountws/AccountWSItf?wsdl");
            QName serviceQName = new QName("http://jaxws.appserver.edu.cs/", "AccountWSItfService");
            
            // 使用Jakarta版本的Service类
            Service service = Service.create(wsdlUrl, serviceQName);
            AccountWSItf servicePort = service.getPort(AccountWSItf.class);
            
            // 调用服务方法
            servicePort.someMethod();
        }
    }
    
    不要使用旧的javax.xml.ws.Service类,否则会无法识别Jakarta注解。

4. 类加载器/IDE配置问题

  • 检查IDE项目结构,确认没有引入Java EE的旧库(比如javax.jws-api),所有依赖均为Jakarta EE 10相关。
  • 如果使用Arquillian测试WildFly,确保Arquillian容器适配器版本支持WildFly 27和Jakarta EE 10,避免类加载冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:37:05