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

Wildfly 23/24部署Jakarta JWS 3.0 SOAP服务时webservices子系统禁用问题

你对Wildfly自动识别JWS注解完成部署的理解是正确的,符合Jakarta EE规范的应用服务器默认支持该能力,无需手动配置WSServlet。你遇到的问题由webservices子系统未启用、依赖配置冲突两个核心原因导致,可按以下步骤解决:


1. 启用webservices子系统

Wildfly默认的最简启动配置standalone.xml未预装webservices子系统,有两种启用方式:

  • 方式1:使用完整版配置启动,启动命令改为standalone.sh -c standalone-full.xml(Windows为standalone.bat -c standalone-full.xml),该配置默认已启用webservices子系统。
  • 方式2:手动给默认配置添加子系统:
    1. 启动Wildfly后执行命令行工具:./jboss-cli.sh --connect(Windows为jboss-cli.bat --connect)
    2. 依次执行以下两条命令:
    /extension=org.jboss.as.webservices:add()
    /subsystem=webservices:add()
    
    1. 重启Wildfly即可生效。

2. 调整项目依赖配置,避免冲突

Jakarta JWS 3.0相关的API和实现已经内置在Wildfly服务中,项目打包时不需要将这类依赖打入WAR包,否则会出现类冲突导致注解无法被识别。
如果你使用Maven构建项目,需要将JWS相关依赖的scope设置为provided,示例配置如下:

<dependency>
    <groupId>jakarta.jws</groupId>
    <artifactId>jakarta.jws-api</artifactId>
    <version>3.0.0</version>
    <scope>provided</scope>
</dependency>

请检查WAR包的WEB-INF/lib目录,确认不存在jaxws-rt、jaxws-api这类重复的JWS相关依赖包。


3. 验证服务部署

完成上述配置后重新打包部署WAR包,你可以在管理控制台的webservices子系统下看到已部署的服务,也可以直接访问WSDL地址验证服务可用性,默认的WSDL地址格式为:http://<你的服务地址>:8080/<WAR包上下文根>/HelloWorldServerImpl?wsdl。

如果需要自定义上下文根,可以在项目的WEB-INF目录下添加jboss-web.xml文件,配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>my-ws</context-root>
</jboss-web>

配置后WSDL地址对应调整为http://<你的服务地址>:8080/my-ws/HelloWorldServerImpl?wsdl。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:09:01