jersey实现rest实例之二
来源:互联网 发布:阿里云邮寄资料 编辑:程序博客网 时间:2024/06/06 05:57
这里介绍jersey2.x实现rest获取text,xml,json格式数据
测试项目开发部署环境
开发工具:eclipse-jee-juno-SR2-win32
JDK:jdk-7u3-windows-i586
应用服务器:glassfish-4.0
REST实现框架:jersey2.5.1
项目名称:TestJersey2.5
这里应用服务器选择glassfish-4.0,有两个原因
1.jersey2.x版本实现的是JAX-RS 2.0规范,glassfish-4.0版本之前的支持的是JAX-RS 1.0规范,glassfish-4.0要求运行版本不低于jdk7。
2.jersey2.x版本部署到tomcat里面,在返回json格式数据时,会抛异常,jersey2.x在返回json时需要glassfish提供类型支持。
Jersey2.5集成步骤:
1.新建一个动态web工程:TestJersey2.5
2.引入jar包,解压jersey2.5压缩包,将lib、ext、api中的jar文件全部引入项目
3.配置web.xml,这里主要配置jersey自己servlet,配置清单:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>TestJersey2.5</display-name> <servlet> <servlet-name>jersey_rest</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.toplucky.TestApp</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey_rest</servlet-name> <url-pattern>/jars/*</url-pattern> </servlet-mapping></web-app>
4.通过实现javax.ws.rs.Application来存放所有的rest服务资源,代码清单:
package com.toplucky;import javax.ws.rs.ApplicationPath;import org.glassfish.jersey.filter.LoggingFilter;import org.glassfish.jersey.server.ResourceConfig;@ApplicationPath("/jars")public class TestApp extends ResourceConfig{ public TestApp() { packages("com.toplucky.resource"); register(LoggingFilter.class); }}
5.rest服务资源定义在指定包下面,这里定义一个测试服务TestResource放在com.toplucky.resource下面,代码清单:
package com.toplucky.resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.toplucky.TestBean; @Path("test") public class TestResource { @Path("getText") @GET @Produces("text/plain") public String getText() { return "hello lucky"; } @Path("getXml") @GET @Produces(value=MediaType.APPLICATION_XML) public TestBean getXml(){ return new TestBean("a", 26, 62); } @Path("getJson") @GET @Produces(value=MediaType.APPLICATION_JSON) public TestBean getJson(){ return new TestBean("a", 26, 62); } }
6.相关bean,代码清单:
package com.toplucky; 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; } }
到这里测试jersey2.5的准备工作都已经完成,剩下的就是将TestJersey2.5项目部署到GlassFish4.0中并发布,
这里可能需要下载GlassFish for eclipse插件,方便在eclipse工具中快速部署与发布,我这里截一个集成后的图。
请求文本数据:http://localhost:8080/TestJersey2.5/jars/test/getText
界面显示结果:hello lucky
请求xml数据:http://localhost:8080/TestJersey2.5/jars/test/getXml
界面显示结果:
- jersey实现rest实例之二
- jersey实现rest实例之二
- jersey实现rest实例
- Jersey实现REST入门实例
- jersey实现rest入门实例
- Jersey 实现Rest service
- jersey rest webservice实现上传下载
- Jersey+Spring 实现rest 接口 服务调用
- REST(Jersey实现)统一异常机制
- Jersey+Spring 实现rest 接口 服务调用
- REST+Jersey学习笔记(二)--根资源及注解
- jwt(json-web-token)在rest中的实现--jersey
- 基于Spring4 Hibernate4 jersey实现rest风格系统
- 使用Jersey快速实现rest风格的webservice
- jwt(json-web-token)在rest中的实现–jersey
- Spring集成Jersey开发,实现rest约束例子
- Jersey make REST call
- [REST Jersey] @QueryParam Demo
- python的内置对象
- Spring不支持依赖注入static静态变量
- 更新及事物处理(章节摘要)
- 学习路
- 杭电 2602
- jersey实现rest实例之二
- Substring with Concatenation of All Words
- Swing JTable 详解
- 使用tmx地图
- hdu1004 map,迭代器
- [Python]win32com模块编程初探
- ios AFNetworking预期内容错误
- 石英表需适时送到维修店更换电池
- 几个主要软件调试方法及调试原则