我試圖用舊的RESTEasy 3.0.5更新WAR到更新的東西。 3.0.6可以正常工作,但在更新到3.0.7(或更高版本,如3.0.24)後,所有資源(@Path
)都將丟失 - 404對於任何資源。 WAR在Apache Tomcat服務器下運行。RESTEasy註釋掃描無法找到資源(在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
@Dimitri我沒有看到任何區別,以相同的方式工作,如果設置爲空,沒有任何作用,如果沒有 - 增加資源工作。 –