欢迎来到天天文库
浏览记录
ID:1306751
大小:95.50 KB
页数:15页
时间:2017-11-10
《用 java 技术创建 restful web 服务》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、简介JAX-RS(JSR-311)是为JavaEE环境下的RESTful服务能力提供的一种规范。它能提供对传统的基于SOAP的Web服务的一种可行替代。在本文中,了解JAX-RS的主要组件。本文用一个例子展示了一个企业如何使用JAX-RS内的功能以一种Restful的方式公开员工的联系信息。背景多年来,开发人员使用各种工具在其Java应用程序内创建RESTful服务。由于REST架构的简单性,主要需求—接收HTTP消息和头部的能力—可以由一个简单的JavaWeb容器实现。Javaservlets常被用来开发RESTful应用程序。如何使用servlet并没有固定的模式。通常,ser
2、vlet会接受请求并自己解析这个HTTP请求URI,以将此请求与一个已知资源相匹配。对于REST服务开发,这个简单的servlet模型以更为正式的API得到扩展。但是,因为这些API是在servlet模型之上开发的,所以这些API中没有一个是作为正式的标准开发的。随着REST越来越多地被采用为一种架构,JavaCommunityProcess(JCP)计划在未来的JavaEnterpriseEdition6发布版中包括对REST的正式支持。JSR-311也已创建好,并已有了JAX-RS1.0规范,提供了一种新的基于注释的方式来开发RESTful服务。与servlet模型相比,JAX
3、-RS注释让您能集中于您的资源和数据对象。并且,您不必再开发通讯层(通过servlet)。Java资源JAX-RS建立了一种特殊的语言来描述资源,正如由其编程模型所表示的。有五种主要条目:根资源、子资源、资源方法、子资源方法以及子资源定位器。根资源根资源是由@Path注释的Java类。@Path注释提供了一个value属性,用来表明此资源所在的路径。value属性可以是文本字符、变量或变量外加一个定制的正则表达式。清单1给出了一个例子。清单1.JAX-RS根资源子资源子资源是作为subresourcelocator调用的结果返回的Java类。它们类似于根资源,只不过它们不是由@Pa
4、th注释的,因它们的路径是由子资源定位器给出的。子资源通常包含由HTTP请求方法指示符(designator)注释的方法以便服务此请求。如果它们不包含如此注释的方法,那么它们将会通过指派给合适的子资源定位器来进一步解析此资源处理请求。清单2.JAX-RS子资源packagecom.ibm.jaxrs.sample.organization;importjavax.ws.rs.GET;publicclassDepartment{@GETpublicStringgetDepartmentName(){...}}如上所示的清单2展示了由ContactsResource.getContac
5、tDepartment方法返回的子资源。在这个例子中,如果一个HTTPGET请求被发送给/contact/{contactName}/department路径,那么Department子资源内的getDepartmentName资源方法就会处理此请求。资源方法资源方法是根资源或子资源内绑定到HTTP方法的Java方法。绑定是通过诸如@GET这样的注释完成的。清单3.JAX-RS资源方法packagecom.ibm.jaxrs.sample.organization;importjava.util.List;importjavax.ws.rs.GET;importjavax.ws.r
6、s.Path;@Path(value="/contacts")publicclassContactsResource{@GETpublicListgetContacts(){...}}在清单3的例子中,发送到/contacts路径的HTTPGET请求将会由getContacts()资源方法处理。子资源方法子资源方法非常类似于资源方法;惟一的区别是子资源方法也是由@Path注释的,此注释进一步限定了该方法的选择。清单4.JAX-RS子资源方法packagecom.ibm.jaxrs.sample.organization;importjava.util.Li
7、st;importjavax.ws.rs.GET;importjavax.ws.rs.Path;@Path(value="/contacts")publicclassContactsResource{@GETpublicListgetContacts(){...}@GET@Path(value="/ids")publicListgetContactIds(){...}}在清单4中,发送到/contacts/ids路径的HTTP
此文档下载收益归作者所有