在最近几个在微服务式架构中提供JAX-RS服务的例子中,我在定义根资源时看到了类似的东西:
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
resources.add(my.package.MyService.class);
return resources;
}
为什么我需要覆盖此方法并明确声明我的资源而不是让他们通过@Path
注释发现它们?
答案 0 :(得分:1)
我猜你会遇到旧的或不合格的例子。至少对于JAX-RS 2.x,没有必要这样做。您甚至不需要在web.xml中注册JAX-RS
只需添加@ApplicationPath("/your/rest/root")
扩展javax.ws.rs.core.Application
的JAX-RS激活器 - 类注释。
之后,您的JAX-RS提供程序应扫描使用@Path
注释的所有资源并自动注册它们。所有拦截器和提供者都是如此
有关更多示例,请转到官方repo with Java EE samples或official samples for Wildfly app server - 您可能需要根据您使用的JEE版本更改分支。
希望有助于和快乐的黑客攻击。