使用 RestEasy + servlet 3 自动扫描休息服务

Rest services auto scan using RestEasy + servlet 3

我计划在 RestEasy 框架 (3.0.11) 和 servlet 版本 3 的帮助下实现 Rest 服务。

我已经使用 resteasy-scan 上下文在运行时扫描我的 rest 服务,但是从 servlet 版本 3.0 开始,它不是扫描并抛出异常(部署在 tomcat7 中)。

能否建议我解决这个问题,如何扫描其余服务?

web.xml 的任何示例或配置都很好。

一种方法,没有 any web.xml (RESTeasy servlet) 配置是只有一个空的 Application subclass,注释为@ApplicationPath(对于 url-映射)。

根据 JAX-RS 规范,在 Servlet 3.x 环境中,如果您有以下条件

@ApplicationPath("/api")
public class MyAppliation extends Application {

}

这足以使应用程序通过class路径扫描来注册资源class和提供程序。相反,我们可以通过这种方式显式注册资源 class 和提供者

@ApplicationPath("/api")
public class MyAppliation extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(MyResource.class);
        return classes;
    }
    @Override
    public Set<Object> getSingletons() {
        Set<Object> singletons = new HashSet<Object>();
        singletons.add(new MyFilter());
        return singletons;
    }
}

根据规范,一旦我们 return 从这些重写方法中的任何一个设置了 非空 ,假设应用程序负责所有注册,并且 class 路径注册被禁用。

现在这不是您想要的,但它只是空 class 起作用的背景。