我正在尝试通过JAX-RS Web服务发送JSON对象。我的文件web.xml是:
<servlet> <description>JAX-RS Tools Generated - Do not modify</description> <servlet-name>JAX-RS Servlet</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>it.notifire</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS Servlet</servlet-name> <url-pattern>/jaxrs/*</url-pattern> </servlet-mapping>
为我要发送的对象建模的类是:
public class GPSCoordinate { private float latitudine; private float longitudine; public float getLatitudine() { return latitudine; } public void setLatitudine(float latitudine) { this.latitudine = latitudine; } public float getLongitudine() { return longitudine; } public void setLongitudine(float longitudine) { this.longitudine = longitudine; } }
根类资源是:
@Path("position") public class Position { @Context private UriInfo context; @GET @Produces(MediaType.APPLICATION_JSON) public GPSCoordinate getHTML() { GPSCoordinate coord = new GPSCoordinate(); coord.setLatitudine(90.45f); coord.setLongitudine(34.56f); return coord; } }
现在,当我尝试访问该服务时,将浏览器指向以下链接
http://localhost:8080/Notifire/jaxrs/position
我得到以下错误:
消息org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:找不到针对媒体类型= application / json的MessageBodyWriter
在我的WEB-INF / lib文件夹中,有了jersey JAX-RS实现的最新版本(jaxrs-ri-2.5.jar)和jersey- json.jar存档。
任何帮助将非常感激。
尝试将Genson添加到您的类路径中,它将自动启用JSON支持。
Genson是json和java / scala的数据绑定和流媒体库。它实现了JAX-RS的扩展点MessageBodyReader / Writer,允许球衣自动检测Genson并将其用于Json解析/编写。
您可以找到有关Gensons与JaxRS集成(球衣和cie)的更多信息。