Post técnico #6: Una intercepción por clase; el Same interception type cannot be specified twice on the same class


A veces por no leer la documentación de las API surgen errores que nos hacen perder el pelo. Para la muestra un botón: después de llevar un buen rato de desarrollo haciendo un interceptor de EJBs, intenté subir la aplicación y el resultado fue el siguiente:

Grave: Exception while loading the app : Same interception type cannot be specified twice on the same class org.jboss.weld.interceptor.util.InterceptorMetadataException: Same interception type cannot be specified twice on the same class at org.jboss.weld.interceptor.reader.InterceptorMetadataUtils.
buildMethodMap(InterceptorMetadataUtils.java:136) at org.jboss.weld.interceptor.reader.InterceptorMetadataUtils.
readMetadataForTargetClass(InterceptorMetadataUtils.java:43) at org.jboss.weld.interceptor.reader.cache.DefaultMetadataCachingReader$2.
apply(DefaultMetadataCachingReader.java:36) at org.jboss.weld.interceptor.reader.cache.DefaultMetadataCachingReader$2.
apply(DefaultMetadataCachingReader.java:34) at com.google.common.collect.ComputingConcurrentHashMap$
ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)…

Después de indagar en la web y encontrar soluciones como por ejemplo que las anotaciones @PostConstruct o @PreDestroy estaban repetidas en alguno de los beans manejados por el contenedor, sospeché sobre la anotación @AroundInvoke (que en últimas era la única herramienta nueva había sido incluida en el último desarrollo) y revisé su documentación, en donde encontré la respuesta:

A class must not declare more than one AroundInvoke method

El caso era que en el código había una sola clase con cuatro métodos empleando la anotación @AroundInvoke. Grave error. Separándolos en cuatro clases diferentes el problema se solucionó (si alguien conoce una mejor forma de solucionarlo, por favor no deje de comunicarnoslo).

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: