【发布时间】:2014-08-06 11:18:05
【问题描述】:
在 Java EE 中,我试图在方法参数具有特定注释时调用拦截器。这是我的代码:
注解的代码
@Retention(RUNTIME)
@Target(PARAMETER)
public @interface Token{
//NOP
}
拦截器的代码
@Interceptor
public class TokenInterceptor{
@AroundInvoke
public Object checkInvocation(InvocationContext ctx) throws Exception {
//Actual Code that detects the presence of the annotation
}
}
带注释参数的方法
public void processOrders(@Token List<Order> token) {}
beans.xml
<interceptors>
<class>com.project.security.TokenInterceptor</class>
</interceptors>
当我尝试部署我的 JBoss 服务器时,出现以下错误。
原因:org.jboss.weld.exceptions.DeploymentException: WELD-000069 拦截器必须至少有一个绑定,但 com.project.security.TokenInterceptor 没有 在 org.jboss.weld.bean.InterceptorImpl.(InterceptorImpl.java:72) 在 org.jboss.weld.bean.InterceptorImpl.of(InterceptorImpl.java:59) 在 org.jboss.weld.bootstrap.AbstractBeanDeployer.createInterceptor(AbstractBeanDeployer.java:229) 在 org.jboss.weld.bootstrap.BeanDeployer.createBeans(BeanDeployer.java:149) 在 org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:204) 在 org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:349) 在 org.jboss.as.weld.WeldStartService.start(WeldStartService.java:63) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] ... 3 更多
有什么想法可以让它发挥作用吗?
【问题讨论】:
标签: jakarta-ee parameters jboss cdi interceptor