当前位置: 首页 > 知识库问答 >
问题:

JAX-RS NoMessageBodyWriterFoundFailure

严阳秋
2023-03-14

我的jax-rs应用程序的方法:

@GET
@Produces (MediaType.APPLICATION_JSON)
public List <Document> getDocumentList(@HeaderParam("Range") String headerRange) {
int [] range = getRangeFromHeader(headerRange);
return facade.listByRange(range);
}

工作正常。但是,如果修改:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getDocumentList(@HeaderParam("Range") String headerRange) {
   int[] range = getRangeFromHeader(headerRange);
   return Response.ok(
          facade.listByRange(range))
         .header("Content-Range", getContentRangeStr(range)).build();
}

我收到一个错误

...NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response
object of type: java.util.ArrayList of media type: application/json...

服务器Jboss 7.1.1

请告诉我怎么了。

PS.sorry我的英语不好。

共有2个答案

充运浩
2023-03-14

您缺少一个库,如下所述:

这里是解决方案

这意味着类路径中缺少JSON库。杰克逊是我正在使用的,所以把它添加到你的pom中。xml将有助于:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.10.1</version>
</dependency>
司信厚
2023-03-14

下面的代码片段应该可以做到这一点。

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getDocumentList(@HeaderParam("Range") String headerRange) {
   int[] range = getRangeFromHeader(headerRange);
   return Response.ok(
        new GenericEntity<List<Document>>( (List<Document>)facade.listByRange(range))
         )
         .header("Content-Range", getContentRangeStr(range)).build();
}

匿名<code>GenericEntity

-- 编辑

您的代码使用org.jboss.resteasy.resteasy-jackson提供者而不使用的原因org.jboss.resteasy.resteasy-jettison提供者存在于两个提供者之间的根本区别:

  • 前者(杰克逊)依赖于JavaBean模型,发现要序列化的对象的属性,并且不需要类型信息
  • 后者(jettyson)依赖于JAXB注释,因此它需要底层类型信息,由编译器擦除。

 类似资料:
  • JAX

    JAX 是一个 TensorFlow 的简化库,它结合了 Autograd 和 XLA,专门用于高性能机器学习研究。 凭借 Autograd,JAX 可以求导循环、分支、递归和闭包函数,并且它可以进行三阶求导。通过 grad,它支持自动模式反向求导(反向传播)和正向求导,且二者可以任何顺序任意组合。 得力于 XLA,可以在 GPU 和 TPU 上编译和运行 NumPy 程序。默认情况下,编译发生在

  • JAX-WS (JavaTM API for XML-Based Web Services)规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。 在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要

  • JAX-RS (JSR 311) 是一个社区驱动的标准用于使用 Java 构建 RESTful Web 服务。

  • Apache CXF WebService 没有话说,享受沉默 showcase项目已演示了JAX-WS2.0 + CXF 的最重要特性, 其中客户端在测试用例里. SOAP这个名字,本身就是个笑话,一点都不Simple。其他一些WS-*协议,包括安全,附件等都不再看好,因此SpringSide4.0没什么更新。 测试工具依然是SoapUI。 Tips 1. CXF自动生成的WSDL与WADL文件

  • 我正在使用Apache Tomcat v6服务器。在创建新的网络服务时,我获得了“Apache Axis”、“Apache Axis2”和“Apache CXF2. x”的网络服务运行时选项。 是否可以将运行时设置为“JAX-RPC”或“JAX WS”? 编辑: 我正在使用Eclipse IDE

  • 问题内容: 有人可以为入门JAX-WS提供一些好的教程吗?使用wsgen等各种工具… 问题答案: 您可以从这里开始: Java SE 6平台简介JAX-WS 2.0,第1部分 Java SE 6平台简介JAX-WS 2.0,第2部分 NetBeans对JAX-WS确实具有很好的支持,并且提供了许多教程,例如: JAX-WS Web服务入门 Glen Mazza在JAX-WS RI / Metro上