首页  >  文章  >  数据库  >  jersey2搭建流程

jersey2搭建流程

WBOY
WBOY原创
2016-06-07 15:42:541234浏览

一:环境介绍 (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下。 
jersey2搭建流程

(4)创建包路径  cn.com.vs.vo,创建User.java: 


package cn.com.vs.vo; 
import javax.xml.bind.annotation.XmlRootElement; 
@XmlRootElement
public class User {
 
 private String name;
 
 private String age;
 
 private String sex;
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
package cn.com.vs.vo; 

import javax.xml.bind.annotation.XmlRootElement; 
@XmlRootElement public class User {    private String name;    private String age;  
 private String sex;    public String getName() {

  return 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;
 }
}
 }

 public void setName(String name) {
  this.name = name;  }  public String getAge() {   return age;  }  public void setAge(String age) {   this.age = age;
 }  public String getSex() {   return sex;

 }

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);
    } 
 public void setSex(String sex) {   this.sex = sex;  } } 
(5)创建包路径  cn.com.vs.service,创建RestService.java: 
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;  } }
(6)在 cn.com.vs 包路径下创建类 RestApplication.java 
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
 
  mobile
  org.glassfish.jersey.servlet.ServletContainer
  
            javax.ws.rs.Application
            cn.com.vs.RestApplication
       

  1
 
 
 
  mobile
  /rest/*
 

 
    index.html
 

 


  RestDemo显示名称>     移动   org.glassfish.jersey.servlet.ServletContainer                javax.ws.rs.Application参数名称>             cn.com.vs.RestApplication
          1启动时加载>        移动   /rest/*  
      index.html欢迎文件>   欢迎文件列表>
 

表> jersey2搭建流程
(8)在 Tomcat7 中部署运行,查看发布效果:
       获取文本数据:
  jersey2搭建流程


     获取XML数据: 
[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);
    } 
说明:如果通过glassfish-4.0运行的话,是没有任何问题的!如果通过tomcat,需要添加JSON转换器。  (9)解决获取JSON数据的异常,途径一:       a)下载 jackson-all-1.9.11.jar ,放到lib下。       b)修改RestApplication.java,内容如下:  包 cn.com.vs;  导入 org.codehaus.jackson.jaxrs.JacksonJsonProvider; 导入 org.glassfish.jersey.filter.LoggingFilter; 导入 org.glassfish.jersey.server.ResourceConfig;  公共类 RestApplication 扩展 ResourceConfig {      公共 RestApplication() {      //服务类所在的包路径      packages("cn.com.vs.service");      //注册JSON转换器      注册(JacksonJsonProvider.class);       //打印访问日志,一旦跟踪调试,正式发布可清除      注册(LoggingFilter.class);     }  }  表>


(10)解决获取JSON数据的异常,途径二:   
    a) 下载 glassfish-4.0.zip ,解压,拷贝下列JAR到lib下: 
      jersey2搭建流程

   b)修改RestApplication.java,内容如下: 


package cn.com.vs; 
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig; 
public class RestApplication extends ResourceConfig { 
    public RestApplication() {
     //服务类所在的包路径
     packages("cn.com.vs.service");
     //注册JSON转换器
     register(JacksonFeature.class); 

      //打印访问日志,便于跟踪调试,正式发布可清除 
     register(LoggingFilter.class);
    } 
package cn.com.vs; 

import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.jackson.JacksonFeature; import org.glassfish.jersey.server.ResourceConfig;  public class RestApplication extends ResourceConfig { 
    public RestApplication() {      //服务类所在的包路径jersey2搭建流程      packages("cn.com.vs.service");      

//注册JSON转换器

     register(JacksonFeature.class); 

      //打印访问日志,便于跟踪调试,正式发布可清除 

     register(LoggingFilter.class);
    } 

(11)选择上述途径中的一种,然后发布启动,获取JSON数据,即可成功,如下: jersey2搭建流程

附件是我搭建的demo,由于目前最新版本为jersey2.13.我使用的是jersey2。13.
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn