快速业务通道

用Java技术创建RESTful Web服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

用Java技术创建RESTful Web服务

时间:2011-08-02 IBM Dustin Amrhein

简介:JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范。它能提供对传 统的基于 SOAP 的 Web 服务的一种可行替代。

在本文中,了解 JAX-RS 的主要组件。本文用一个例子展示了一个企业如何使用 JAX-RS 内的功能以 一种 Restful 的方式公开员工的联系信息。

背景

多年来,开发人员使用各种工具在其 Java 应用程序内创建 RESTful 服务。由于 REST 架构的简单性,主要需求 — 接收 HTTP 消息和 头部的能力 — 可以由一个简单的 Java Web 容器实现。

Java servlets 常被用来开发 RESTful 应用程序。如何使用 servlet 并没有固定的模式。通常,servlet 会接受请求并自己解析这个 HTTP 请求 URI,以将此请求与一个已知资源相匹配。对于 REST 服务开发,这个简单的 servlet 模型以 更为正式的 API 得到扩展。但是,因为这些 API 是在 servlet 模型之上开发的,所以这些 API 中没有 一个是作为正式的标准开发的。

随着 REST 越来越多地被采用为一种架构,Java Community Process (JCP) 计划在未来的 Java Enterprise Edition 6 发布版中包括对 REST 的正式支持。JSR-311 也已创建好,并已有了 JAX-RS 1.0 规范,提供了一种新的基于注释的方式来开发 RESTful 服务。与 servlet 模型相比,JAX-RS 注释让您能集中于您的资源和数据对象。并且,您不必再开发通讯层(通过 servlet)。

Java 资源

JAX-RS 建立了一种特殊的语言来描述资源,正如由其编程模型所 表示的。有五种主要条目:根资源、子资源、资源方法、子资源方法以及子资源定位器。

根资源

根资源是由 @Path 注释的 Java 类。@Path 注释提供了一个 value 属性,用来表明此 资源所在的路径。value 属性可以是文本字符、变量或变量外加一个定制的正则表达式。清单 1 给出了 一个例子。

清单 1. JAX-RS 根资源

package com.ibm.jaxrs.sample.organization; import javax.ws.rs.Path; @Path(value="/contacts") public class ContactsResource {   ... }

子资源

子资源是作为 subresource locator 调用的结果返回的 Java 类。它们类似于根资源,只不过它们不 是由 @Path 注释的,因它们的路径是由子资源定位器给出的。子资源通常包含由 HTTP 请求方法指示符 (designator)注释的方法以便服务此请求。如果它们不包含如此注释的方法,那么它们将会通过指派给 合适的子资源定位器来进一步解析此资源处理请求。

清单 2. JAX-RS 子资源

package com.ibm.jaxrs.sample.organization; import javax.ws.rs.GET; public class Department {   @GET   public String getDepartmentName() {   ...   } }

如上所示的清单 2 展示了由 ContactsResource.getContactDepartment 方法返回的子资源。在这个 例子中,如果一个 HTTP GET 请求被发送给 /contact/{contactName}/department 路径,那么 Department 子资源内的 getDepartmentName 资源方法就会处理此请求。

用Java技术创建RESTful Web服务(2)

时间:2011-08-02 IBM Dustin Amrhein

资源方法

资源方法是根资源或子资源内绑定到 HTTP 方法的 Java 方法。绑定是通过诸如 @GET 这样的注释完 成的。

清单 3. JAX-RS 资源方法

package com.ibm.jaxrs.sample.organization; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path(value="/contacts") public class ContactsResource {   @GET   public List<ContactInfo> getContacts() {   ...   } }

在清单 3 的例子中,发送到 /contacts 路径的 HTTP GET 请求将会

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号