jboss - 将拦截器与 Tapestry Resteasy 一起使用

标签 jboss resteasy tapestry tynamo

我有一个资源类,我希望能够在调用资源方法之前检查身份验证 token ,从而避免将 token 直接传递到资源方法中。

我已将以下内容添加到 web.xml:

<context-param>
        <param-name>resteasy.providers</param-name>
       <param-value>com.michael.services.interceptors.AuthorisationInterceptorImpl</param-value>
</context-param>

我的拦截器实现如下:

@Provider
public class AuthorisationInterceptorImpl implements javax.ws.rs.container.ContainerRequestFilter {

    @Inject
    private ApiAuthenticationService apiAuthenticationService

    @Override
    public void filter(ContainerRequestContext requestContext) {

       //Code to verify token   

    }

}

过滤器方法在我的资源类中的方法之前被调用;但是,当我尝试调用它的方法时,apiAuthenticationService 没有被注入(inject)并且为空。
我正在使用 Tapestry 5.3.7、Tapestry-Resteasy 0.3.2 和 Resteasy 2.3.4.Final。 这可以做到吗?

最佳答案

快速浏览一下 Tapestry-resteasy 代码,我认为这行不通。

@Inject 注释是 Tapestry-ioc 的一部分;如果 Tapestry 未实例化类,则不会遵循 @Inject 注释。

web.xml 中定义的过滤器由 servlet 容器(Jetty、Tomcat 等)实例化,这些容器没有任何有关 Tapestry 和 Tapestry 注释的特殊知识。

我认为您最好在 Tapestry 的 HttpServletRequestHandler 或 RequestHandler 管道中贡献一个过滤器(请参阅他们的 JavaDoc)。但是,我不确定如何访问 ContainerRequestContext。

关于jboss - 将拦截器与 Tapestry Resteasy 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562514/

相关文章:

jboss - Wildfly 9 负载平衡

java - Java Servlet 中的 DBMS_ALERT 用法

jboss - 如何在jboss6中禁用HornetQ

java - 轻松休息 : How to send an easy POST request with parameters and api key

java - 如何在 DateField 中设置默认日期?

java - 如何将自动完成选择值提交到 Tapestry5 中的文本字段?

java - Jboss wildfly Java 兼容性

json - 无法找到内容类型为application/json的MessageBodyReader并键入类java.lang.String

java - JAXRS/RestEasy 中的@Produces 集合

java - 如何在 Tapestry 中隐藏额外的组件跨度标签?