NoMessageBodyWriterFoundFailure:找不到类型响应对象的 MessageBodyWriter
NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type
即使 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 提供 module/jars
<?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.
上帮助解决这个问题吗
本质上,您已经告诉服务器将 SerializedStatusTO 对象作为响应发送回客户端,但它不知道如何将其转换为字符串。您需要包含一个具有 com.karthik.SerializedStatusTO class 的 MessageBodyWriter 的 jar,或者,如果这是您制作的 class,您需要自己制作并包含一个。
https://jersey.java.net/documentation/latest/message-body-workers.html#d0e6952
IIRC 如果您的 bean 是 JAXB 注释的,那么它应该不需要自定义编写器。您能否提供该 bean 的代码和发送服务器响应的方法?
终于找到了解决办法。
问题出在子系统名称上。没有名为“resteasy”的子系统,该子系统实际上名为“jaxrs”。
我在 jboss-deployment-structure.xml 中更新了子系统名称,如下所示:
<exclude-subsystems>
<subsystem name="jaxrs" />
</exclude-subsystems>
即使 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 提供 module/jars
<?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.
上帮助解决这个问题吗本质上,您已经告诉服务器将 SerializedStatusTO 对象作为响应发送回客户端,但它不知道如何将其转换为字符串。您需要包含一个具有 com.karthik.SerializedStatusTO class 的 MessageBodyWriter 的 jar,或者,如果这是您制作的 class,您需要自己制作并包含一个。
https://jersey.java.net/documentation/latest/message-body-workers.html#d0e6952
IIRC 如果您的 bean 是 JAXB 注释的,那么它应该不需要自定义编写器。您能否提供该 bean 的代码和发送服务器响应的方法?
终于找到了解决办法。
问题出在子系统名称上。没有名为“resteasy”的子系统,该子系统实际上名为“jaxrs”。
我在 jboss-deployment-structure.xml 中更新了子系统名称,如下所示:
<exclude-subsystems>
<subsystem name="jaxrs" />
</exclude-subsystems>