J'ai essayé d'utiliser le nouveau CorsFilter
qui est disponible dans Resteasy 3.0.9. J'ai trouvé un exemple en bas de cette page: requête Ajax avec JAX-RS/RESTEasy implémentant CORS
Si je définis ce filtre dans la méthode getSingletons()
(de la sous-classe Application
), mes ressources ne sont plus analysées. Cela signifie qu'aucune ressource ne sera trouvée et l'erreur suivante se produit:
javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures
Sur la page suivante, j'ai trouvé une description: javax.ws.rs.NotFoundException: impossible de trouver la ressource pour le chemin complet Une erreur se produit
Mais en gros, ce que cette option de déploiement fait, c'est rechercher les annotations de @Path, @Provider, etc. pour l'application. La raison en est que JAX-RS recherchera d'abord les classes et les objets dans getClasses () et getSingletons () substitués, respectivement. Si ensuite renvoyez des ensembles vides, cela indique à JAX-RS de faire un balayage (selon les spécifications).
Donc JAX-RS ne fait pas de scan si j'écrase la méthode getSingletons()
? Existe-t-il un autre moyen de configurer ce CorsFilter
et d'activer l'analyse des ressources`?
"Existe-t-il un autre moyen de configurer ce CorsFilter et d'activer l'analyse des ressources?"
Une façon de conserver la numérisation consiste simplement à implémenter un javax.ws.rs.core.Feature
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
import org.jboss.resteasy.plugins.interceptors.CorsFilter;
@Provider
public class CorsFeature implements Feature {
@Override
public boolean configure(FeatureContext context) {
CorsFilter corsFilter = new CorsFilter();
corsFilter.getAllowedOrigins().add("*");
context.register(corsFilter);
return true;
}
}
Cette fonction sera analysée comme tous les autres @Provider
Et @Path
S.
Testez avec seulement
@ApplicationPath("/api")
public class RestApplication extends Application {
}
C:\>curl -i http://localhost:8080/api/simple -H "Origin:stackoverflow.com" HTTP/1.1 200 OK Date: Wed, 01 Apr 2015 12:07:22 GMT Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: stackoverflow.com Content-Type: application/octet-stream Content-Length: 15 Server: Jetty(9.2.4.v20141103)
Hello Response!