问题 Resteasy 3.09 CorsFilter

2023-06-27Java开发问题
2

本文介绍了问题 Resteasy 3.09 CorsFilter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我尝试使用 Resteasy 3.0.9 中提供的新 CorsFilter.我在此页面底部找到了一个示例:使用 JAX-RS/RESTEasy 实现 CORS 的 Ajax 请求p>

如果我在 getSingletons() (Application 子类的)方法中定义此过滤器,那么我的资源将不再被扫描.这意味着将找不到任何资源并发生以下错误:

<块引用>

javax.ws.rs.NotFoundException:找不到完整路径的资源错误发生

在以下页面上,我找到了描述:javax.ws.rs.NotFoundException:找不到完整路径的资源错误发生

<块引用>

但基本上,此部署选项所做的是扫描应用程序的@Path、@Provider 等注释.原因是 JAX-RS 将首先分别在覆盖的 getClasses() 和 getSingletons() 中查找类和对象.如果然后返回空集,这会告诉 JAX-RS 进行扫描(根据规范).

所以如果我覆盖 getSingletons() 方法,JAX-RS 不会进行扫描?是否有另一种方法来配置此 CorsFilter 并启用资源扫描`?

解决方案

还有其他方法可以配置此 CorsFilter 并启用资源扫描吗?"

保持扫描的一种方法是实现 javax.ws.rs.core.Feature

import javax.ws.rs.core.Feature;导入 javax.ws.rs.core.FeatureContext;导入 javax.ws.rs.ext.Provider;导入 org.jboss.resteasy.plugins.interceptors.CorsFilter;@Provider公共类 CorsFeature 实现 Feature {@覆盖公共布尔配置(FeatureContext 上下文){CorsFilter corsFilter = new CorsFilter();corsFilter.getAllowedOrigins().add("*");context.register(corsFilter);返回真;}}

此功能将像所有其他 @Provider@Path 一样被扫描.

只用测试

@ApplicationPath("/api")公共类 RestApplication 扩展应用程序 {}

<块引用>

C:>curl -i http://localhost:8080/api/simple -H "Origin:stackoverflow.com"HTTP/1.1 200 正常日期:格林威治标准时间 2015 年 4 月 1 日星期三 12:07:22访问控制允许凭据:true访问控制允许来源:stackoverflow.com内容类型:应用程序/八位字节流内容长度:15服务器:码头(9.2.4.v20141103)

你好响应!

I tried to use the new CorsFilter which is available in Resteasy 3.0.9. I found an example at the bottom of this page: Ajax request with JAX-RS/RESTEasy implementing CORS

If I define this filter in the method getSingletons() (of the Application subclass) , then my Resources don't get scanned anymore. That means that no Resources will be found and the following error occurs:

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

On the following page i found a description: javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures

But basically, what this deployment option does is scan for annotations of @Path, @Provider, etc for the application. The reason is that JAX-RS will first look for classes and object in overridden getClasses() and getSingletons(), respectively. If then return empty sets, this tell JAX-RS to do scanning (per the spec).

So JAX-RS doesn't do a scanning if i overwrite the getSingletons() method? Is there another way to configure this CorsFilter and enable the resource scanning`?

解决方案

"Is there another way to configure this CorsFilter and enable the resource scanning?"

One way to keep the scanning is just to implement a 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;
    }  
}

This feature will get scanned for just like all other @Providers and @Paths.

Test with only

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

这篇关于问题 Resteasy 3.09 CorsFilter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13