Ser*_*nin 6 java jersey jackson
我正在使用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();
Run Code Online (Sandbox Code Playgroud)
现在我将我的项目迁移到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泽西不再有效org.glassfish
该文件说以下内容:
为了使用Jackson作为您的JSON(JAXB/POJO)提供程序,您需要在Configurable(客户端/服务器)中为ObjectMapper(如果需要)注册JacksonFeature和ContextResolver.
但在我的案例中,我无法弄清楚如何正确地做到这一点.
我为这个问题创建了一个小项目:
分支master- 泽西岛1.17.1的工作示例;
分支jersey-2.0-migration- 没有工作尝试迁移到Jersey 2.0 - 测试失败 ;
分支jersey-2.0-migrate-client-only- 非工作尝试使用泽西岛客户端2.0与工作泽西服务器1.17.1 - 测试失败.
问题是:如何在Jersey 2.0中启用基于POJO的JSON绑定
use*_*639 15
文档有点过时了.最新的Jackson版本提供了一个可自动发现的提供程序.将以下jar添加到类路径:
1)jackson-annotations-2.2.2.jar
2)jackson-core-2.2.2.jar
3)jackson-databind-2.2.2.jar
4)jackson-jaxrs-base-2.2.1.jar
5)jackson-jaxrs-json-provider-2.2.1.jar
6)jackson-module-jaxb-annotations-2.2.2.jar
确保将"com.fasterxml.jackson.jaxrs.json"添加到"jersey.config.server.provider.packages"servlet配置属性中,以便可以自动发现Jackson json提供程序.
| 归档时间: |
|
| 查看次数: |
9185 次 |
| 最近记录: |