@BeanParam 不适用于 Apache CXF 3。0.x

@BeanParam does not work with Apache CXF 3.0.x

我正在尝试使用来自 JAX-RS 的 @BeanParam 注释。

它在 Apache cxf 2.7.7 上工作得很好,但在升级到 Apache cxf 3.0.1 后它就不能工作了。在我的休息服务中,bean 参数为空,我得到 NullPointerException。

我试过使用 cxf 3.0.3 但结果是一样的。

我的 RestService 看起来像

Class MyService {
    @BeanParam
    private MyBean params;

    @Path("/test")
    public Response testIt() {
        // params is null here
    }
}

class MyBean {
   @QueryParam
   private String message;

   public void setMessage(String message) {
       this.message = message;
   }

   public String getMessage() {
       return this.message;
   }
}

我对 gradle 的依赖看起来像

def cxfVersion = "3.0.1"

ext.libraries = [

cxf: [
    "org.apache.cxf:apache-cxf:$cxfVersion",
    "org.apache.cxf:cxf-rt-frontend-jaxrs:$cxfVersion"
]

有人知道从 cxf 2.7.7 到 cxf 3 发生了什么变化吗?0.x,这将使它无法运行。

我发现了问题。这是由于类路径(版本 2.3.3)中存在来自其他项目依赖项的另一个 cxf 版本 jar。不知何故,它优先于 3.x 版本并且不支持 BeanParam。

从类路径中删除那个 jar 对我有用。