restful origin enable domain cross control allow java jax-rs cors resteasy

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?