Problems Resteasy 3.09 CorsFilter
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 CORS
Jeśli zdefiniuję ten filtr w metodzie getSingletons()
(z podklasy Application
), to Moje zasoby nie będą już skanowane. Oznacza to, że nie zostaną znalezione żadne zasoby i wystąpi 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: nie można znaleźć źródła pełnego błędu ścieżki
ale zasadniczo to, co robi ta opcja wdrażania, to skanowanie w poszukiwaniu adnotacji @Path, @ Provider itp. Powodem jest to, że JAX-RS najpierw będzie szukał klas i obiektów odpowiednio w nadpisanych getClasses() i getSingletons (). If then return empty sets, this tell JAX-RS to do scanning (per the spec).
Więc JAX-RS nie robi skanowanie jeśli nadpiszę metodę getSingletons()
? Czy istnieje inny sposób, aby skonfigurować to CorsFilter
i włączyć skanowanie zasobów'?
1 answers
" czy istnieje inny sposób, aby skonfigurować ten filtr i włączyć skanowanie zasobów?"
Jednym ze sposobów na utrzymanie skanowania jest tylko zaimplementowanie 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;
}
}
Ta funkcja zostanie zeskanowana tak jak wszystkie inne @Provider
s I @Path
s.
Test 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!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 03:48:38