@BeanParam不适用于Apache CXF 3.0.x.

时间:2015-01-12 13:15:49

标签: apache rest java-ee cxf jax-rs

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

它与Apache cxf 2.7.7完美配合,但在升级到Apache cxf 3.0.1后,它无效。在我的休息服务中,bean param为null,我得到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的变化是什么,这会使它无效。

1 个答案:

答案 0 :(得分:0)

我发现了问题。这是因为classpath(版本2.3.3)中存在另一个来自其他项目依赖项的cxf版本jar。不知怎的,它优先于3.x版本而且没有BeanParam的支持。

从classpath中删除那个jar对我有用。