Olá Pessoal, tudo bom?
Hoje iremos falar sobre o erro WELD-001417 ou quando a classe interceptor não foi anotada corretamente. Veja na continuação
Descrição do Erro
Quando estamos criando um interceptor existem algumas annotations que devem ser colocadas. Uma delas é a @Interceptor que caso não seja colocada gerará uma exception. Vamos supor o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package br.com.mauda.seminario.cientificos.interceptor; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; @Cronometro public class CronometroInterceptor { @AroundInvoke public Object intercept(InvocationContext ctx) throws Exception { return ctx.proceed(); } } |
Como não está declarado a @Interceptor na classe, ocorrerá a exception com a seguinte stack trace:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001417: Enabled interceptor class br.com.mauda.seminario.cientificos.interceptor.CronometroInterceptor (<class>br.com.mauda.seminario.cientificos.interceptor.CronometroInterceptor</class> in file:/seminarioscientificos/cientificos/target/classes/META-INF/beans.xml@8) does not match an interceptor bean: the class is not found, or not annotated with @Interceptor and still not registered through a portable extension, or not annotated with @Dependent inside an implicit bean archive
at org.jboss.weld.bootstrap.Validator.validateEnabledInterceptorClasses(Validator.java:644)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:464)
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:478)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:787)
at br.com.mauda.seminario.cientificos.util.WeldContext.<init>(WeldContext.java:11)
at br.com.mauda.seminario.cientificos.util.WeldContext.<clinit>(WeldContext.java:8)
… 47 more
Solução
Uma solução para esse problema é inserir a annotation @Interceptor, junto com seu import conforme o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package br.com.mauda.seminario.cientificos.interceptor; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; @Interceptor @Cronometro public class CronometroInterceptor { @AroundInvoke public Object intercept(InvocationContext ctx) throws Exception { return ctx.proceed(); } } |
finally{
Caso você achou mais alguma solução para essa exception, por favor deixe nos comentários abaixo!
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply