首页 文章

NoMessageBodyWriterFoundFailure:找不到类型的响应对象的MessageBodyWriter

提问于
浏览
3

我收到以下错误,即使RESTEasy JAXB jar - resteasy-jaxb-provider.jar捆绑在WAR文件中

04:52:54,461 ERROR [org.jboss.resteasy.core.SynchronousDispatcher] (default task-1) Failed executing GET /editor/getMetadata/com.karthik.editor.model.EditorAuditEditor: o
rg.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.karthik.SerializedStatusTO of media type: app
lication/xml
        at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:166)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:485)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:422)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:111)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:217)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:159)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)

我还在我的WAR中包含了jboss-deployment-structure.xml来排除JBoss提供的模块/ jar

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
        <exclude-subsystems>
            <subsystem name="resteasy" />
        </exclude-subsystems>
        <exclusions>
            <module name="javaee.api" />
            <module name="javax.ws.rs.api"/>
            <module name="org.jboss.resteasy.resteasy-jaxrs" />
        </exclusions>
        <local-last value="true" />
    </deployment>
</jboss-deployment-structure>

我已经在JBoss 7 EAP上部署了WAR . 我目前正在将我的应用程序从JBoss 5迁移到JBoss 7.没有代码更改,并且在JBoss5上工作正常 . 你能否帮助解决JBOSS 7上的这个问题 .

2 回答

  • 0

    最后,我找到了解决方案 .
    问题是子系统名称 . 没有名为“resteasy”的子系统,该子系统实际上被命名为“jaxrs” .
    我更新了jboss-deployment-structure.xml中的子系统名称,如下所示:

    <exclude-subsystems>
       <subsystem name="jaxrs" />
    </exclude-subsystems>
    
  • 2

    基本上,您已经告诉您的服务器将SerializedStatusTO对象作为响应发送回客户端,但它不知道如何将其转换为字符串 . 您需要为com.karthik.SerializedStatusTO类包含一个具有MessageBodyWriter的jar,或者,如果这是您创建的类,则需要自己创建并包含一个 .

    https://jersey.java.net/documentation/latest/message-body-workers.html#d0e6952

    IIRC如果你的bean是JAXB注释的,它应该不需要自定义编写器 . 你能提供bean的代码和发送服务器响应的方法吗?

相关问题