java - origin - Problemas Resteasy 3.09 CorsFilter
java restful cross domain (1)
"¿Hay alguna otra forma de configurar este CorsFilter y habilitar el escaneo de recursos?"
Una forma de mantener el escaneo es simplemente implementar 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;
}
}
Esta característica será escaneada como cualquier otra @Provider
y @Path
.
Prueba solo
@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!
Traté de usar el nuevo CorsFilter
que está disponible en Resteasy 3.0.9. Encontré un ejemplo en la parte inferior de esta página: solicitud Ajax con JAX-RS / RESTEasy implementando CORS
Si defino este filtro en el método getSingletons()
(de la subclase Application
), mis recursos ya no se escanean. Eso significa que no se encontrarán recursos y se producirá el siguiente error:
javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures
En la página siguiente encontré una descripción: javax.ws.rs.NotFoundException: No se pudo encontrar el recurso para la ruta completa. Ocurre un error.
Pero básicamente, lo que hace esta opción de implementación es buscar anotaciones de @Path, @Provider, etc. para la aplicación. La razón es que JAX-RS primero buscará clases y objetos en reemplazados getClasses () y getSingletons (), respectivamente. Si luego devuelve los conjuntos vacíos, esto le indica a JAX-RS que realice el escaneo (según la especificación).
¿Entonces JAX-RS no hace un escaneo si sobrescribo el método getSingletons()
? ¿Hay CorsFilter
otra forma de configurar este CorsFilter
y habilitar el escaneo de recursos?