gpt4 book ai didi

java - Kotlin CDI 拦截器未被调用

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:50 24 4
gpt4 key购买 nike

我正在尝试通过移植一些现有的 Java 代码来学习 Kotlin,以了解其中的差异。我正在尝试编写一个简单的 CDI 拦截器,它允许我记录带注释的方法的开始和结束。我的拦截器和注释如下所示:

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()
}
}

我还有一个用@Logged 注释的简单 JAX-RS 端点。它看起来像这样:

@Path("/healthCheck")
@Stateless
@Logged
open class HealthCheckRS : AbstractRestService() {

@Path("/")
@GET
@POST
@PUT
@DELETE
@HEAD
@OPTIONS
@Logged
open fun healthCheck(): String {
return "" + System.currentTimeMillis()
}
}

我期望看到我的 LoggingInterceptor 函数被调用,但它完全绕过了拦截器。为了让它在 Kotlin 中工作,我还需要做些什么吗?我有类似的代码,可以在 Java 中正常运行。

最佳答案

信用归Siliarus : 你的拦截器启用了吗?我在你的拦截器上没有看到@Priority(并且你没有提到beans.xml)。

这个答案只是一个占位符,因此这个问题不再列在未回答的问题上。事实上,评论就是解决方案。

关于java - Kotlin CDI 拦截器未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49494404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com