以前项目中采用的axis2发布webservice接口,近期用户要求提供rest方式来实现接口的发布,要求速度尽可能快的实现这种方式,所以就采用jersey来做rest的实现。以下就是在项目中采用jersey实现rest的步骤,仅供参考。
首先到jersey官网下载,目前最新的版本是jersey2.4.1,那会我下载用的版本是jersey1.18,这里也以1.18版本来做的集成。下载地址:https://jersey.java.net/download.html,下载下来以后,将zip文件解压到当前 目录,解压后的目录结构:
然后开始拷贝jar包到项目中,如果项目中使用的请求,返回数据格式是xml、text这些数据类型,那么jersey已经提供,就只拷贝lib、contribs文件夹下的jar到项目中就ok了,如果考虑使用json数据格式,还需要下载几个额外的依赖jar,我项目中要求接口返回json数据格式,所以还多了适配json的依赖包,下面分别列出lib、contribs、json对应的jar:
、、
将jersey所需要的依赖包导入项目以后,就开始集成了。
配置jersey请求拦截器 ,在web.xml中加入以下配置
<servlet>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.json</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
com.json.JsonResource一个要要发布为rest方式的接口类
package com.json;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("test")
public class JsonResource {
@GET
@Path("createSimpleBean")
@Produces( MediaType.APPLICATION_JSON)
public TestBean createSimpleBean() {
return new TestBean("a", 1, 1L);
}
@GET
@Path("getHello/{some}/{flag}")
@Produces("text/plain")
public String getHello(@PathParam(value="some")String somebody, @PathParam(value="flag")int flag) {
return "Hello World!" + somebody + "-" + flag;
}
}
com.json.TestBean是一个可以转换成xml,json数据格式的java类
package com.json;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class TestBean {
public String a;
public int b;
public long c;
public TestBean() {
}
public TestBean(String a, int b, long c) {
this.a = a;
this.b = b;
this.c = c;
}
public String getA() {
return a;
}
public int getB() {
return b;
}
public long getC() {
return c;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TestBean that = (TestBean) o;
if (b != that.b) return false;
if (c != that.c) return false;
if (a != null ? !a.equals(that.a) : that.a != null) return false;
return true;
}
@Override
public int hashCode() {
int result = a != null ? a.hashCode() : 0;
result = 31 * result + b;
result = 31 * result + (int) (c ^ (c >>> 32));
return result;
}
}
项目中用到的注解,这里就不做说明了,在jersey的api中都有说明。
将项目TestJersey2部署到tomcat中,端口采用8080,项目名称就叫TestJersey2。
测试json:http://localhost:8080/TestJersey2/jaxrs/test/creatSimpleBean
返回:
{"a":"a","b":"1","c":"1"}
测试text:http://localhost:8080/TestJersey2/jaxrs/test/getHello/world/100
返回:
Hello World!world-100
以上就是项目中集成jersey实现rest方式的主要步骤,在集成jersey时,刚开始选择的版本是2.4.1,在引入json依赖包时,暴露了一些问题,当时由于时间紧迫,就选择了1.18,该版本,官网提供的依赖包大部分都有,无需自己再去找相关的依赖包,这给我节约了时间。