J'essaye de mettre à jour WAR avec le vieux RESTEasy 3.0.5 vers quelque chose de plus récent. 3.0.6 fonctionne correctement, mais après la mise à jour vers la version 3.0.7 (ou supérieure, comme 3.0.24), toutes les ressources (@Path
) sont perdues - 404 pour n'importe quelle ressource. WAR est exécuté sous le serveur Apache Tomcat.RESTEasy annotation scan impossible de trouver des ressources (sous Tomcat)
Je crois que la raison est liée au changement du scanner d'annotation: https://issues.jboss.org/browse/RESTEASY-1010
J'ai essayé de créer la classe qui étend javax.ws.rs.core.Application
au lieu de configuration web.xml. Selon la réponse https://stackoverflow.com/a/29957040/2528366, l'ensemble vide doit déclencher l'analyse pour @Path
mais aucune ressource n'est trouvée. Si je remplace getClasses()
qui renvoie un ensemble non vide, ces ressources fonctionnent comme prévu.
web.xml: https://pastebin.com/uRD2w6Z6
Nouvelle Application
classe héritée:
@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;
}
}
ressources sont des interfaces et la mise en œuvre est dans les classes dérivées. Le déplacement des annotations vers les classes ne change rien.
Qu'est-ce qui ne va pas avec les annotations ou la configuration? Ou y a-t-il autre chose nécessaire pour déclencher la numérisation des annotations?
Que faire si vous supprimez la barre oblique avant 'rest' dans' ApplicationPath'? – Dimitri
@Dimitri Je ne vois pas de différence, fonctionne de la même manière, si l'ensemble est vide, rien ne fonctionne, sinon - les ressources ajoutées fonctionnent. –