JerseyTest和Spring并创建一个ServletContext

时间:2014-03-26 21:15:24

标签: spring jersey jersey-2.0

我正在从Jersey 1.16迁移到Jersey 2.7。我有应用程序正在运行和工作,但我在测试时遇到了问题。

有些事需要注意:
该应用程序使用Spring,并由类ApplicationConfiguration.class配置。 应用程序没有web.xml - Jersey servlet和过滤器以编程方式配置。 我正在使用jersey-spring3库。 与使用jersey-spring3库相关,我必须为我的onStartup方法添加一个变通方法

// The following line is required to avoid having jersey-spring3 registering it's own Spring root     context.
// https://java.net/jira/browse/JERSEY-2038
servletContext.setInitParameter("contextConfigLocation", "");

以下是问题:
当测试启动时,SpringComponentProvider试图用一个危险的假设初始化Spring,我无法弄清楚如何纠正 - 基于xml的配置。看一下代码,麻烦就是这个块

    ServletContext sc = locator.getService(ServletContext.class);

    if(sc != null) {
        // servlet container
        ctx = WebApplicationContextUtils.getWebApplicationContext(sc);
    } else {
        // non-servlet container
        ctx = createSpringContext();
    }

运行JUnit测试,ServletContext为null,并调用createSpringContext。

这是一个问题:
有没有办法运行测试并指定ServletContext / ServletContainer?

1 个答案:

答案 0 :(得分:0)

我认为https://java.net/jira/browse/JERSEY-2259涵盖了这个问题。

简而言之:他们从Jersey 2.x中删除了此功能,并将其视为功能请求(而非回归),因此不会将其视为高优先级项目。