2015-04-01 23 views
14

Próbowałem użyć nowego CorsFilter, który jest dostępny w Resteasy 3.0.9. Znalazłem przykład na dole tej strony: Ajax request with JAX-RS/RESTEasy implementing CORSProblemy Resteasy 3.09 CorsFilter

Gdybym określić ten filtr w metodzie getSingletons() (od Application podklasy), a następnie moje zasoby nie dostać już skanowane. Oznacza to, że będzie można znaleźć żadnych Zasoby i następujący błąd:

javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures

Na następnej stronie znalazłem opis: javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures

ale w zasadzie, co to opcja wdrażania jest skanowana dla adnotacji @Path, @Provider, itp. dla aplikacji. Powodem jest to, że JAX-RS najpierw poszuka klas i obiektu w nadpisanych odpowiednio getClasses() i getSingletons(). Jeśli następnie zwróci puste zestawy, mówi to JAX-RS, aby wykonać skanowanie (zgodnie ze specyfikacją).

Więc JAX-RS nie robi skanowanie gdybym nadpisać metodę getSingletons()? Czy istnieje inny sposób skonfigurowania tego CorsFilter i włączenia skanowania zasobów?

Odpowiedz

24

"Czy istnieje inny sposób skonfigurowania tego filtru CorsFilter i włączenia skanowania zasobów?"

Jednym ze sposobów, aby utrzymać skanowanie tylko wdrożyć 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; 
    } 
} 

Funkcja ta będzie się zeskanowany do tak jak wszystkie inne @Provider s oraz @Path s.

testowy tylko

@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!