org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:无法找到类型的响应对象的MessageBodyWriter:媒体类型:application / xml

时间:2013-04-23 06:07:04

标签: java resteasy

@POST
@Path("/getmethod")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_XML)
Response getMethod(SomeVO someVO);

在我的 * .ear中,我可以看到resteasy-jaxb-provider-2.2.0.GA.jar& resteasy-jaxrs-2.2.1.GA.jar都存在,但在尝试访问此方法时,我遇到了这个错误:

  

[org.jboss.resteasy.core.SynchronousDispatcher]   (http- / 0.0.0.0:8080-1)执行POST失败   / / getmethod:   org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:不能   找到类型的响应对象的MessageBodyWriter: *媒体的VO   类型:application / xml at   org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:216)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at

org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:585)

  

[resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at   org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:506)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at at   org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at at   org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at at   org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at at   org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)   [resteasy-jaxrs-2.3.3.Final-redhat-1.jar:2.3.3.Final-redhat-1] at at   javax.servlet.http.HttpServlet.service(HttpServlet.java:847)   [JBoss的-servlet的api_3.0_spec-1.0.1.Final-红帽-1.jar:1.0.1.Final-红帽-1]     在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)   [jboss-as-web-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1] at at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:679)   [jbossweb-7.0.16.Final-redhat-1.jar:] at   org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:931)   java.lang.Thread.run上的[jbossweb-7.0.16.Final-redhat-1.jar:](未知   来源)[rt.jar:1.7.0_09]

2 个答案:

答案 0 :(得分:8)

我没有在VO类属性中添加注释。

样品:

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "user")
public class TestVo {

    String order;
    String serial;
    int number;

    @XmlElement
    public String getorder() {
        return order;
    }

    public void setorder(String order) {
        this.order = order;
    }

    @XmlElement
    public String getserial() {
        return serial;
    }

    public void setserial(String serial) {
        this.serial = serial;
    }

    @XmlAttribute
    public int getnumber() {
        return number;
    }

    public void setnumber(int number) {
        this.number = number;
    }

}

答案 1 :(得分:1)

您可以通过引用以下链接来解决此问题。他建议添加                  org.jboss.resteasy         RestEasy的-JAXB提供商         2.2.0.GA      罐

http://www.mkyong.com/webservices/jax-rs/resteasy-could-not-find-messagebodywriter-for-response-object-of-typexx-of-media-type-applicationxml/