问题Resteasy 3.09 CorsFilter

我尝试使用Resteasy 3.0.9中提供的新CorsFilter 。 我在本页面的底部find了一个示例: 使用JAX-RS / RESTEasy实现CORS的Ajax请求

如果我在Application子类的方法getSingletons()定义了这个filter,那么我的资源就不会被扫描了。 这意味着没有资源将被发现,并发生以下错误:

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

在接下来的页面上,我发现了一个描述: javax.ws.rs.NotFoundException:找不到完整path的资源错误发生

但基本上,这个部署选项的作用是扫描应用程序的注解@Path,@Provider等。 原因是JAX-RS将首先分别在重写的getClasses()和getSingletons()中查找类和对象。 如果返回空集,则告诉JAX-RS进行扫描(按照规范)。

因此,如果我覆盖getSingletons()方法,JAX-RS不会执行扫描吗? 是否有另一种方式来configuration此CorsFilter并启用资源扫描?

“是否有另一种方法来configuration此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; } } 

该function将像所有其他@Provider@Path一样被扫描。

只用testing

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