【发布时间】:2017-10-06 15:13:16
【问题描述】:
我正在尝试使用旧的 RESTEasy 3.0.5 将 WAR 更新为更新的东西。 3.0.6 工作正常,但在更新到 3.0.7(或更高版本,如 3.0.24)后,所有资源 (@Path) 都会丢失 — 任何资源都会丢失 404。 WAR 在 Apache Tomcat 服务器下运行。
我认为原因与注释扫描仪的更改有关: https://issues.jboss.org/browse/RESTEASY-1010
我尝试创建扩展 javax.ws.rs.core.Application 而不是 web.xml 配置的类。根据答案https://stackoverflow.com/a/29957040/2528366,空集应该触发扫描@Path,但没有找到任何资源。如果我覆盖返回非空集的getClasses(),则该资源将按预期工作。
web.xml:https://pastebin.com/uRD2w6Z6
新建Application继承类:
@ApplicationPath("/rest")
public class WebApi extends Application
{
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> s = new HashSet<>();
// if line below is uncommented SomeResource works fine
// s.add(SomeResourceImpl.class);
return s;
}
}
资源是接口,实现在派生类中。将注释移动到类本身不会改变任何事情。
注解或配置有什么问题?或者是否需要其他东西来触发对注释的扫描?
【问题讨论】:
-
如果在
ApplicationPath中删除rest之前的斜线会怎样? -
@Dimitri 我看不出有什么区别,工作方式相同,如果设置为空,则没有任何工作,如果不是 - 添加资源工作。