Подтвердить что ты не робот

Проблемы с потерей 3.09 CorsFilter

Я попытался использовать новый CorsFilter, который доступен в Resteasy 3.0.9. Я нашел пример в нижней части этой страницы: Запрос Ajax с JAX-RS/RESTEasy, реализующим CORS

Если я определяю этот фильтр в методе getSingletons() (подкласса Application), то мои ресурсы больше не будут отсканированы. Это означает, что никаких ресурсов не будет найдено и произойдет следующая ошибка:

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

На следующей странице я нашел описание: javax.ws.rs.NotFoundException: Не удалось найти ресурс для полного пути. Ошибка.

Но в основном, что делает эта опция развертывания, это сканирование аннотаций @Path, @Provider и т.д. для приложения. Причина в том, что JAX-RS сначала будет искать классы и объекты в переопределенных getClasses() и getSingletons() соответственно. Если затем вернуть пустые множества, это скажет JAX-RS делать сканирование (по спецификации).

Итак, JAX-RS не выполняет сканирование, если я перезаписываю метод getSingletons()? Есть ли другой способ настроить этот CorsFilter и включить сканирование ресурсов??

4b9b3361

Ответ 1

"Есть ли другой способ настроить этот CorsFilter и включить сканирование ресурсов?"

Один из способов сохранить сканирование - это реализовать 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;
    }  
}

Эта функция будет сканироваться так же, как и все остальные @Provider и @Path s.

Проверить только

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