使用 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 起作用的背景。
我计划在 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 起作用的背景。