首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring跟resteasy集成,构建restful风格服务

2013-10-07 
spring和resteasy集成,构建restful风格服务spring和resteasy集成,三种主要的方式,对于和jboss as7的集成不

spring和resteasy集成,构建restful风格服务

spring和resteasy集成,三种主要的方式

对于和jboss as7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可。这里不是本帖的话题。

我们这里讲的servlet容器是tomcat。


开始前,先做一些准备工作,引入jar包,我使用的是maven。

jar包版本,添加到属性文件里去:

<properties>

<jackson-version>2.2.3</jackson-version>
  <resteasy-version>3.0.4.Final</resteasy-version>
      <httpcomp-version>4.2.5</httpcomp-version>

</properties>

下面是依赖jar

<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy-version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpcomp-version}</version>
</dependency>
    <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${httpcomp-version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
<version>${httpcomp-version}</version>
</dependency>

    <dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>${resteasy-version}</version>
<exclusions>
<exclusion>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jettison-provider</artifactId>
</exclusion>
</exclusions>
</dependency>
    <dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>${resteasy-version}</version>
</dependency>
    <dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>${resteasy-version}</version>
</dependency>

1、如果servlet容器支持的servlet版本大于等于3.0,那么需要做如下工作:

1、1

首先添加这个依赖,这个是servlet 3支持的初始化器

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-servlet-initializer</artifactId>
        <version>${resteasy-version}</version>
    </dependency>

1、2

web.xml文件的配置,增加以下配置

<!-- resteasy启动初始化监听器 -->
<listener>
      <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
    </listener>
    <!-- resteasy和spring整合,有了这个,ContextLoaderListener就不要了  -->
<listener>
    <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>  
  </listener>

<!-- <listener> -->
<!-- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
<!-- </listener> -->

1、3

编写pojo

<servlet>      <servlet-name>Spring</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet;</servlet-class>   </servlet>   <servlet-mapping>      <servlet-name>Spring</servlet-name>      <url-pattern>/*</url-pattern>   </servlet-mapping>
编写控制器,类似如下:

@Controller@Path(ContactsResource.CONTACTS_URL)public class ContactsResource{   public static final String CONTACTS_URL = "/contacts";   @Autowired   ContactService service;   @GET   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})   @Path("data")   public Contacts getAll()   {      return service.getAll();   }   @PUT   @POST   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})   @Path("data")   public Response saveContact(@Context UriInfo uri, Contact contact)         throws URISyntaxException   {      service.save(contact);      URI newURI = UriBuilder.fromUri(uri.getPath()).path(contact.getLastName()).build();      return Response.created(newURI).build();   }   @GET   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})   @Path("data/{lastName}")   public Contact get(@PathParam("lastName") String lastName)   {      return service.getContact(lastName);   }   @POST   @PUT   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)   @Produces(MediaType.TEXT_HTML)   public ModelAndView saveContactForm(@Form Contact contact)         throws URISyntaxException   {      service.save(contact);      return viewAll();   }      @GET   @Produces(MediaType.TEXT_HTML)   public ModelAndView viewAll()   {      // forward to the "contacts" view, with a request attribute named      // "contacts" that has all of the existing contacts      return new ModelAndView("contacts", "contacts", service.getAll());   }}

这样就可以将spring mvc和resteasy整合在一起了。

项目例子https://github.com/resteasy/Resteasy/tree/3.0.4.Final/jaxrs/examples/resteasy-springMVC

resteasy参考文档http://docs.jboss.org/resteasy/docs/2.2.1.GA/userguide/html/

有很丰富的内容可以自己学习

热点排行