简体   繁体   English

json异常的cxf rest版本控制

[英]cxf rest versioning by json exception

this is how expose 这是如何暴露

@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 works fine !! XML工作正常!

But When I post Json face this exception : 但是当我发布Json时遇到此异常:

No message body reader has been found for class server.obj.Person, ContentType: application/com.myapp-v2.0+json [WARNING] /malamPayroll/cxfDemo/postPerson/1000 java.lang.AbstractMethodError: javax.ws.rs.core.Response$ResponseBuilder.status(ILjava/lang/String;)Ljavax/ws/rs/core/Response$ResponseBuilder; 找不到类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; at javax.ws.rs.core.Response$ResponseBuilder.status(Response.java:921) 在javax.ws.rs.core.Response $ ResponseBuilder.status(Response.java:921)

enter image description here 在此处输入图片说明

I had the same problem, after some experiments I just downgraded version of javax.ws.rs-api from 2.1 to 2.0.1 and exception is gone. 我遇到了同样的问题,经过一些实验,我只是将javax.ws.rs-api的版本从2.1降级到2.0.1,并且异常消失了。 still not sure what was causing the exception as in 2.1 sources I couldn't even see status method with string as input parameter. 仍然不知道是什么导致了异常,如2.1源中所示,我什至看不到以字符串作为输入参数的状态方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM