相关疑难解决方法(0)

在Jersey中使用名称绑定注释

如何@NameBinding在Jersey中使用过滤器对特定资源方法或资源类应用过滤器?

请考虑以下注释:

@NameBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface SomeAnnotaion{}
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

java rest jersey

11
推荐指数
1
解决办法
1万
查看次数

使用Jersey的AbstractHttpContextInjectable自定义方法注释不工作

如果以非安全的方式访问某些方法,我想限制它们.我正在创建一个@Secure注释,用于检查请求是否是通过安全通道发送的.但是,我无法创建捕获请求的HttpContext的方法injectable.

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Secure {

}

public class SecureProvider<T> implements InjectableProvider<Secure, AbstractResourceMethod> {
    @Override
    public ComponentScope getScope() {
        return ComponentScope.PerRequest;
    }

    @Override
    public Injectable<?> getInjectable(ComponentContext componentContext,
                                       Secure annotation,
                                       AbstractResourceMethod method) {
        return new SecureInjectable();
    }
}

public class SecureInjectable<T> extends AbstractHttpContextInjectable<T> {
    @Override
    public T getValue(HttpContext context) {    
        // validation here

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Dropwizard框架,因此提供程序的初始化应该像以下一样简单:

environment.addProvider(new SessionRestrictedToProvider<>(new SessionAuthenticator(), "MySession"));
environment.addProvider(new SecureProvider<>());
environment.setSessionHandler(new SessionHandler());
Run Code Online (Sandbox Code Playgroud)

用法:

@Resource
@Path("/account")
public class AccountResource {
    @GET
    @Path("/test_secure")
    @Secure
    public Response isSecure() …
Run Code Online (Sandbox Code Playgroud)

java annotations jersey dropwizard

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

jersey ×2

annotations ×1

dropwizard ×1

rest ×1