【问题标题】:Rest services auto scan using RestEasy + servlet 3使用 RestEasy + servlet 3 自动扫描休息服务
【发布时间】:2015-08-19 19:36:52
【问题描述】:

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

我在运行时使用了resteasy-scan上下文来扫描我的rest服务,但由于servlet 3.0版因此它不是扫描并抛出异常(部署在tomcat7中)。

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

web.xml 的任何示例或配置都可以。

【问题讨论】:

    标签: java jboss7.x resteasy


    【解决方案1】:

    没有any web.xml(RESTeasy servlet)配置的一种方法是只使用一个空的Application 子类,并用@ApplicationPath 注释(用于url 映射)。

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

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

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

    @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;
        }
    }
    

    根据规范,一旦我们从这些重写方法之一返回一个 非空 集,则假定应用程序负责所有注册,并且类路径注册被禁用。

    现在这不是你想要的,它只是空类工作的背景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2016-08-25
      • 2013-12-31
      相关资源
      最近更新 更多