一:环境介绍 (1)Jersey2.5.1 (2)Eclipse 3.7 Tomcat 7 JDK 7 二:搭建步骤 (1)通过地址https://jersey.java.net/下载jaxrs-ri-2.5.1.zip。 (2)通过Eclipse 创建动态工程RestDemo。 (3)解压jaxrs-ri-2.5.1.zip,拷贝下图列表中的JAR包到RestDemoW
一:环境介绍
(1)Jersey2.5.1
(2)Eclipse 3.7 +Tomcat 7 +JDK 7
二:搭建步骤
(1)通过地址https://jersey.java.net/ 下载jaxrs-ri-2.5.1.zip。
(2)通过Eclipse 创建动态工程RestDemo。
(3)解压jaxrs-ri-2.5.1.zip,拷贝下图列表中的JAR包到RestDemoWebContentWEB-INFlib下。
(4)创建包路径 cn.com.vs.vo,创建User.java:
import javax.xml.bind.annotation.XmlRootElement;
public void setName(String name) {
|
package cn.com.vs.service; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import cn.com.vs.vo.User; @Path("/restService") public class RestService { @GET @Path("/getUserText") @Produces(MediaType.TEXT_PLAIN) public String getUserText() { return "Hello,World!"; } @GET @Path("/getUserXml") @Produces(MediaType.APPLICATION_XML) public User getUserXml() { User user = new User(); user.setName("snail"); user.setAge("22"); user.setSex("male"); return user; } @GET @Path("/getUserJson") @Produces(MediaType.APPLICATION_JSON) public User getUserJson() { User user = new User(); user.setName("snail"); user.setAge("22"); user.setSex("male"); return user; } } |
package cn.com.vs; import org.glassfish.jersey.filter.LoggingFilter; import org.glassfish.jersey.server.ResourceConfig; public class RestApplication extends ResourceConfig { public RestApplication() { //服务类所在的包路径 packages("cn.com.vs.service"); //打印访问日志,便于跟踪调试,正式发布可清除 register(LoggingFilter.class); } } |
(7)修改web.xml,内容如下:
|
RestDemo显示名称>
1启动时加载>
index.html欢迎文件>
欢迎文件列表>
[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class cn.com.vs.vo.User, genericType=class cn.com.vs.vo.User.] with root cause org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class cn.com.vs.vo.User, genericType=class cn.com.vs.vo.User. |
获取JSON数据:http://localhost:8080/RestDemo/rest/restService/getUserJson ,会出现如下异常:
表>
[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:未找到 Media type=application/json、type=class cn.com.vs.vo.User、genericType=class cn.com.vs.vo.User 的 MessageBodyWriter。 ] 根本原因
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:未找到 Media type=application/json、type=class cn.com.vs.vo.User、genericType=class cn.com.vs.vo.User 的 MessageBodyWriter。
package cn.com.vs; import org.codehaus.jackson.jaxrs.JacksonJsonProvider; import org.glassfish.jersey.filter.LoggingFilter; import org.glassfish.jersey.server.ResourceConfig; public class RestApplication extends ResourceConfig { public RestApplication() { //服务类所在的包路径 packages("cn.com.vs.service"); //注册JSON转换器 register(JacksonJsonProvider.class); //打印访问日志,便于跟踪调试,正式发布可清除 register(LoggingFilter.class); } } |
(10)解决获取JSON数据的异常,途径二:
a) 下载 glassfish-4.0.zip ,解压,拷贝下列JAR到lib下:
b)修改RestApplication.java,内容如下:
import org.glassfish.jersey.filter.LoggingFilter;
register(JacksonFeature.class);
register(LoggingFilter.class); |
(11)选择上述途径中的一种,然后发布启动,获取JSON数据,即可成功,如下:
附件是我搭建的demo,由于目前最新版本为jersey2.13.我使用的是jersey2。13.