当前位置: 首页 > 面试题库 >

在Jersey 2.0中无法为Jackson启用基于POJO的JSON绑定支持

董俊
2023-03-14
问题内容

我正在使用Jersey生成JSON(通过Jackson进行POJO映射)和Jetty(从main方法开始)。
它非常适合Jersey 1.x 。:

ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
                        "com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages", "service");
sh.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
...
context.addServlet(sh, "/rest/*");
Server server = new Server(8080);
server.setHandler(context);
server.start();

现在,我将项目迁移到Jersey 2.0,但未能在其中启用基于POJO的JSON绑定,我得到以下信息:
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class business.entity.ExampleEntity, genericType=class business.entity.ExampleEntity.

显然,com.sun.jersey.api.json.POJOMappingFeature随着Jersey转到org.glassfish

该文档说以下内容:

为了将Jackson用作JSON(JAXB /
POJO)提供程序,您需要在可配置(客户端/服务器)中注册JacksonFeature和ObjectMapper的ContextResolver(如果需要)。

但是我无法弄清楚该如何正确处理。

我为这个问题创建了一个小项目:

branch master-Jersey 1.17.1的工作示例;

分支jersey-2.0-migration-无法迁移到Jersey 2.0的尝试- 测试失败 ;

分支jersey-2.0-migrate-client- only-无法正常工作,尝试将Jersey客户端2.0与工作的Jersey服务器1.17.1一起使用- 测试失败

问题是:如何在Jersey 2.0中启用基于POJO的JSON绑定


问题答案:

该文档有点过时了。最新的Jackson版本提供了可自动发现的提供程序。将以下jar添加到类路径:

1)杰克逊注释2.2.2.jar

2)杰克逊核心2.2.2.jar

3)杰克逊-databind-2.2.2.jar

4)杰克逊-贾克斯-基地-2.2.1.jar

5)杰克逊-jaxrs-json-provider-2.2.1.jar

6)杰克逊模块-jaxb-annotations-2.2.2.jar

Make sure to add “com.fasterxml.jackson.jaxrs.json” to the
“jersey.config.server.provider.packages” servlet config property, so the
Jackson json provider can be auto-discovered.



 类似资料:
  • 我正在尝试将消息从 rest API 发送到新路由,即使您在我的 REST API 上收到 JSON 格式的请求并且绑定设置为 JSON,当我将其转发到新路由时,它将显示为 InputStream,我必须将其编组到 JSON 才能使用它。 我已经尝试在RestConfiguration中使用streamCaching和其他组件(consumes、produces、type、dataType)。我还

  • 我和jackson一起绘制地图,我有点迷茫。我的Json具有以下结构 我确实找到了很多处理数组的教程,但我在第一个标记“d”时就已经失败了。而且根本不需要所有的“_元数据”标记。 我创建了一个包含lastName等属性和一个集合附件的pojo。但我的代码在标记“d”或“_元数据”时总是失败 还有杰克逊的读者 任何提示都将不胜感激。 问候马蒂亚斯

  • 我正在使用Jackson的XML绑定,通过到Java POJO的初始映射,将XML转换为Java列表。我所写的作品,但我不认为我使用杰克逊正确。 这实际上是工作,因为我需要它的工作。我得到了一个Groups类,其中有一个用我期望的元素填充的列表。我在想,方法是正确的吗?我不喜欢我有一个二传手做一个添加,但我所尝试的一切都不起作用。

  • 我正在处理一个spring boot应用程序,我想把从2.9.10.2升级到2.10.2。下面是我的pom.xml片段和升级依赖项后得到的错误: pom.xml: null

  • 问题内容: 我有一个对象,希望在JSON中作为RESTful资源使用。我已经启用了Jersey的JSON POJO支持(在web.xml中): 但是,当我尝试访问资源时,出现以下异常: 我要提供的类并不复杂,它只有一些公共final字段和一个设置所有这些的构造函数。字段是所有字符串,基元,与此类似的类或它们的列表(我尝试使用普通列表而不是通用List ,但无济于事)。有谁知道给什么?谢谢! Jav

  • 我正在使用Spring MVC RESTful Web服务 组织。springframework。网状物客户ResourceAccessException:POST请求“http://”时发生I/O错误:服务器返回了URL:http://嵌套异常为java的http响应代码:415。伊奥。IOException:服务器返回了URL:HTTP:的HTTP响应代码:415// 原因:java。伊奥。I