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

Apache CXF 4.1.3中Provider.invoke抛出异常未生成指定HTTP状态码问题

解决Apache CXF 4.1.3中Provider自定义HTTP状态码不生效的问题

核心问题:错误使用了非规范的HttpException类

你当前代码中调用的HttpException大概率是java.net.HttpException,该类不属于jakarta.xml.ws.ProtocolException的子类,因此CXF无法识别它来生成指定的HTTP状态码,最终默认返回500。

正确实现步骤

  1. 引入规范的异常类
    使用Jakarta XML WS标准定义的jakarta.xml.ws.http.HTTPException,它是ProtocolException的直接子类,完全符合Provider.invoke方法JavaDoc的要求。

  2. 修改异常抛出代码
    替换原有代码为:

    throw new WebServiceException("something went wrong", new jakarta.xml.ws.http.HTTPException(123));
    
  3. 注意状态码的有效性(可选)
    示例中的123属于非标准HTTP状态码,部分Web服务器可能会拦截这类状态码并替换为默认值,建议优先使用HTTP标准状态码(如400、404、503等)。

额外排查点

若上述修改后仍不生效,检查以下配置:

  • 确认Provider端点使用HTTP绑定(CXF默认配置通常满足,但需避免自定义异常拦截器覆盖默认逻辑)。
  • 排查是否存在自定义的ExceptionMapper或CXF拦截器,这类组件可能会强制覆盖异常处理逻辑,导致状态码被重置为500。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:12:06