快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
tions, MediaType mediaType) {   return true;   }   public ContactInfo readFrom(java.lang.Class<ContactInfo> type,   java.lang.reflect.Type genericType, java.lang.annotation.Annotation[]   annotations, MediaType mediaType, MultivaluedMap<   java.lang.String,java.lang.String> httpHeaders, java.io.InputStream   entityStream) {   return ContactInfo.parse(entityStream);   } }

与 MessageBodyWriter isWriteable 类似,ContactInfoReader 的 isReadable 方法将被调用以便决 定 MessageBodyReader 能否处理此输入。如果 isReadable 返回 true 且 @Consumes 值与此资源方法的 @Consumes 值最为匹配,就会选择 ContactInfoReader。当 readFrom 方法被调用时,结果会是基于请求 InputStream 的内容创建 ContactInfo 实例。

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

时间:2011-08-02 IBM Dustin Amrhein

配置

至此,我们探讨了 JAX-RS 资源类和一些提供程序类(MessageBodyReaders 和 MessageBodyWriters )。那么,该如何在 JAX-RS 运行时内配置这些类呢?这可以通过扩展 javax.ws.rs.core.Application 类实现。此类提供了一组类或一组单例(singleton)对象实例,在一个 JAX-RS 应用程序内包括所有的 根级别的资源和提供程序(由 @Provider 注释的类)。若为这个示例联系信息应用程序扩展这个 Application 类,它应该类似于清单 13。

清单 13. ContactInfoApplication

package com.ibm.jaxrs.sample.organization; import java.util.HashSet; import java.util.Set; import javax.ws.rs.core.Application; public class ContactInfoApplicaiton extends Application {   public Set<Class<?>> getClasses() {   Set<Class<?>> classes = new HashSetSet<Class<?>>();   classes.add(ContactsResource.class);   classes.add(ContactInfoWriter.class);   classes.add(ContactInfoReader.class);   }   public SetSet<Object<?>> getSingletons() {   // nothing to do, no singletons    } }

getClasses 方法为 JAX-RS 运行时提供了一组可用于元数据的类。请注意,getSingletons 方法什么 都不返回。通常而言,将 JAX-RS 提供程序视为单例是没有问题的,但将一个 JAX-RS 资源视为单例则要 格外谨慎。常被 JAX-RS 资源类使用的基于注释的注入可能在一个单例实例的情况内并不受支持。因此, 除非仔细计划,否则应该避免使用 JAX-RS 资源的单例实例。

假设,您正在一个 servlet 容器内部署一个 JAX-RS 应用程序,有两种方法可以向 JAX-RS 运行时注 册您的 javax.ws.rs.core.Application 子类。这是由 WAR 文件的 web.xml 处理的,如下所示。

清单 14. 不能感知 JAX-RS 的 servlet 容器

<web-app id="WebApp_ID" version="2.5"   xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi=   "http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">   <servlet>   <servlet-name>ContactInfoServlet</servlet-name>   <servlet-class>com.sample.RESTSystemServlet</servlet-class>   <init-param>    <param-name>javax.ws.rs.Application</param-name>    <param-value>    com.ibm.jaxrs.sample.organization.ContactIn

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号