我正在从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?
答案 0 :(得分:0)
我认为https://java.net/jira/browse/JERSEY-2259涵盖了这个问题。
简而言之:他们从Jersey 2.x中删除了此功能,并将其视为功能请求(而非回归),因此不会将其视为高优先级项目。