@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 对我有用。
我正在尝试使用来自 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 对我有用。