码迷,mamicode.com
首页 > 编程语言 > 详细

jersey 集成spring,并使用grizzly内置容器测试jersey

时间:2015-06-07 20:20:35      阅读:409      评论:0      收藏:0      [点我收藏+]

标签:

jersey集成spring相对来说比较简单,需要注意的几点是:

1、引入maven依赖jersey-spring,其中包含了spring的相关依赖,如果和项目中所使用的spring版本相冲突,可以通过exclusions清除掉。

2、确保jersey资源类所在的包路径,能被spring扫描到,即spring配置中的<context:component-scan base-package="" />。

3、确保jersey资源类打上注解@Component,这样可以注入spring容器的对象实例。

4、在web.xml中配置com.sun.jersey.spi.spring.container.servlet.SpringServlet。

5、jersey集成grizzly内置容器测试,看jersey集成grizzly 。在这个项目中稍有不同,自定义了一个MyJerseyServlet,继承自SpringServlet,实现spring容器的加载,以便在jersey资源类中能依赖注入。这样就能使用内置容器测试。

项目源码参考

jersey-spring的maven依赖,去除了spring相关依赖。具体配置,可进入上面的"项目源码参考"。

<!-- jersey-spring: 包含了jersey-servlet/jersey-server/jersey-core等,同时还包含了spring相关依赖。 -->
<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-spring</artifactId>
    <version>1.19</version>
    <exclusions>
        <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-beans</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-context</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-web</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-aop</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>

web.xml

<servlet>
    <servlet-name>jerseySpring</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jerseySpring</servlet-name>
    <url-pattern>/jersey/*</url-pattern>
</servlet-mapping>

为方便测试,集成grizzly,grizzly默认是不加载spring配置的,无法从spring容器中依赖注入对象实例,所以做了以下扩展。

自定义MyJerseyServlet,加载spring配置。

package com.jersey.demo.web.servlet;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.sun.jersey.spi.spring.container.servlet.SpringServlet;

public class MyJerseyServlet extends SpringServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected ConfigurableApplicationContext getDefaultContext() {
        return new ClassPathXmlApplicationContext("applicationContext.xml");
    }
}

启动、停止grizzly容器的Main类,也有相应的调整。

package com.jersey.demo;

import java.io.IOException;

import com.jersey.demo.web.servlet.MyJerseyServlet;
import com.sun.grizzly.http.SelectorThread;
import com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory;

public class Main {

    public static final String URI = "http://localhost:8081/myapp";

    public static SelectorThread startServer() throws IllegalArgumentException,
            IOException {

        // 相当于web.xml中servlet jersey的配置
        return GrizzlyWebContainerFactory.create(URI, MyJerseyServlet.class,
                null);
    }

    public static void main(String[] args) throws IllegalArgumentException,
            IOException {
        SelectorThread selectorThread = startServer();
        System.out.println("--------jersey server started!");
        System.in.read();

        // stop server
        selectorThread.stopEndpoint();
        System.out.println("--------jersey server stoped!");
    }
}

测试类和jersey集成grizzly中的一样。

jersey 集成spring,并使用grizzly内置容器测试jersey

标签:

原文地址:http://my.oschina.net/u/2007041/blog/426007

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!