拦截器在开发人员的机器上调用而不是在服务器上调用

时间:2013-12-13 14:46:18

标签: java-ee glassfish

我们在JAX-RS Web服务上使用java ee拦截器。

我们使用此注释拦截:

@InterceptorBinding
@Inherited
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface FunctionalityAuthorization {
    //using non binding to allow interception of all calls with the annotation
    //not only if the value matches
    @Nonbinding public String value() default "";
}

拦截器的声明如下:

@Interceptor
@FunctionalityAuthorization
public class FunctionalityAuthorizationInterceptor {

@AroundInvoke
public Object intercept(InvocationContext context) throws Exception {

然后我们对REST方法进行了注释:

@GET
@Produces("application/json")
@FunctionalityAuthorization(Functionalities.TMSALERTS_ALERTS_VIEW)
public AlertDto[] get() {

我们当然也在beans.xml文件中指定了拦截器。

拦截器检查用户是否有权访问正在调用的REST服务。

现在我们有一个令人震惊的情况:我们意识到拦截器没有在我们的登台服务器上工作!但是他们在我们的开发人员机器上工作,尽管我们尝试将开发人员机器配置为尽可能接近登台服务器(安装了相同的其他应用程序集,我们可以找到的所有设置,同一数据库的备份,独立的Glassfish安装相同的版本,与服务器上的WAR文件相同...),我们无法在开发人员机器上重现该问题。

知道什么可以解释行为上的差异吗?这是Glassfish 3.1.2.2。

0 个答案:

没有答案