cxf通过json异常进行版本控制

问题描述 投票:0回答:1

这是多么暴露

@POST
@Path("/postPerson/{id}")
@Consumes({"application/com.myapp-v1.0+xml", "application/com.myapp-v1.0+json"})
@Produces(MediaType.APPLICATION_JSON)
public Person postPerson(Person person, @PathParam("id") int id) {
    log4j.info("adding person to map   id   : " + id + "  person  : " + person.toString());
    personsMap.put(id, person);
    log4j.info("After size  v1.0 : " + personsMap.size() + " id : " + id);
    return person;
}

@POST
@Path("/postPerson/{id}")
@Consumes({"application/com.myapp-v2.0+xml", "application/com.myapp-v2.0+json"})
@Produces(MediaType.APPLICATION_XML)
public String postPersonv1(Person person, @PathParam("id") int id) {
    log4j.info("Before size  v2.0 : " + personsMap.size() + " id : " + id);      
    personsMap.put(id, person);
    log4j.info("After size  v2.0 : " + personsMap.size() + " id : " + id);
    return "ok";
}

XML工作得很好!!

但是当我发布Json面临这个例外时:

没有为类server.obj.Person找到消息正文阅读器,ContentType:application / com.myapp-v2.0 + json [警告] / malamPayroll / cxfDemo / postPerson / 1000 java.lang.AbstractMethodError:javax.ws.rs .core.Response $ ResponseBuilder.status(ILjava /郎/字符串;)Ljavax / WS / RS /核心/响应$ ResponseBuilder;在javax.ws.rs.core.Response $ ResponseBuilder.status(Response.java:921)

enter image description here

json cxf
1个回答
1
投票

我遇到了同样的问题,经过一些实验,我只是将javax.ws.rs-api的版本从2.1降级到2.0.1,异常消失了。仍然不确定是什么导致了异常,因为在2.1源代码中我甚至看不到带有字符串作为输入参数的状态方法。

© www.soinside.com 2019 - 2024. All rights reserved.