Kotlin CDI Interceptor не вызывается
Я пытаюсь изучить Kotlin, портируя некоторый существующий код Java, чтобы увидеть различия. Я пытаюсь написать простой CDI Interceptor
это позволит мне регистрировать начало и конец аннотированного метода. Мой перехватчик и аннотация выглядят так:
import javax.interceptor.InterceptorBinding
@InterceptorBinding
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class Logged {
}
import org.apache.log4j.Logger
import javax.interceptor.AroundInvoke
import javax.interceptor.Interceptor
import javax.interceptor.InvocationContext
@Interceptor
@Logged
class LoggingInterceptor {
@AroundInvoke
fun logFunctionDetails(context: InvocationContext): Any {
print("logFunctionDetails - start")
// TODO Implement method
print("logFunctionDetails - end")
return context.proceed()
}
}
У меня также есть простая конечная точка JAX-RS с аннотацией @Logged. Это выглядит так:
@Path("/healthCheck")
@Stateless
@Logged
open class HealthCheckRS : AbstractRestService() {
@Path("/")
@GET
@POST
@PUT
@DELETE
@HEAD
@OPTIONS
@Logged
open fun healthCheck(): String {
return "" + System.currentTimeMillis()
}
}
Я ожидаю увидеть мой LoggingInterceptor
Вызвана функция, но она полностью обходит перехватчик. Есть ли что-то еще, что мне нужно сделать, чтобы это работало в Котлине? У меня есть подобный код, который работает на Java без проблем.
1 ответ
Кредит переходит к Siliarus: Ваш перехватчик включен? Не вижу @Priority
на вашем перехватчике (и вы не упомянули beans.xml
).
Этот ответ скорее заполнитель, так что этот вопрос больше не указан в неотвеченных вопросах. На самом деле комментарий был решением.