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).

Этот ответ скорее заполнитель, так что этот вопрос больше не указан в неотвеченных вопросах. На самом деле комментарий был решением.

Другие вопросы по тегам