java web配置json,java-如何配置项目以将JSON提供程序与jersey-restful Web服务一起使用...

我正在尝试创建一个restful-jersey Web服务.我必须将JSON对象传递给Web服务.

@POST

@Path("/saveVehicleTrackingData")

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.TEXT_PLAIN)

public String saveVehicleTrackingData(VehicleTracking vehicleTracking) {

return vehicleTracking.toString();

}

我向项目添加json provider的唯一方法是添加了以下maven依赖项:

com.fasterxml.jackson.jaxrs

jackson-jaxrs-json-provider

2.5.1

Due to auto-registration, it should be possible to simply add Maven

dependency (or include jar if using other build systems) and let JAX-RS

implementation discover provider. If this does not work you need to consult

documentation of the JAX-RS implementation for details.

但是自动注册无法正常工作,尝试访问Web服务时出现415-不支持的媒体类型错误.是否有任何有关如何正确注册json提供程序的指南?

解决方法:

为了使“自动注册”工作,需要将应用配置为扫描整个类路径.这可能不是最佳选择,大多数示例甚至都没有提到如何做到这一点.但是一种方法是不使用web.xml,而使用带有@ApplicationPath批注的空Application子类.

@ApplicationPath("/api")

public class JerseyConfig extends Application {}

这足以启用类路径扫描.也许还有其他方法,但是通常您会看到使用的是程序包扫描.在您的web.xml中,您可能会看到类似

Jersey Web Application

org.glassfish.jersey.servlet.ServletContainer

jersey.config.server.provider.packages

your.package.to.scan

1

这将扫描your.package.to.scan软件包.如果您希望它扫描Jackson类,则可以在列表中添加软件包,即

jersey.config.server.provider.packages

your.package.to.scan,

com.fasterxml.jackson.jaxrs.json

如果使用的是ResourceConfig子类,则可以注册(JacksonJsonProvider.class)或注册(JacksonJaxbJsonProvider.class)以获得JAXB注释支持.

如果使用的是Application子类,则可以在重写的getSingletons()方法中添加提供程序的实例.

顺便说一句,如果您使用的是Jersey 2.9,则可以只使用this dependency

org.glassfish.jersey.media

jersey-media-json-jackson

${jersey2.version}

并且无需任何其他配置,它将自动注册.实际上,此依赖关系使用您在文章中提到的依赖关系,但使用Jersey特定的Auto Discoverable功能进行注册.

标签:rest,jersey,fasterxml,json,java

来源: https://codeday.me/bug/20191120/2044613.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值