gpt4 book ai didi

java - Infinispan 自定义拦截器无法与 Hibernate L2 缓存一起使用?

转载 作者:行者123 更新时间:2023-11-30 03:32:32 24 4
gpt4 key购买 nike

在我的项目中,我必须拦截 Hibernate L2 缓存调用,以便设置某些选定缓存对象的生命周期。问题是 hibenate 缓存调用永远不会通过拦截器。

我的拦截器(测试代码)

public class HibernateCacheInterceptor extends BaseCustomInterceptor {
private static Log log = LogFactory.getLog(HibernateCacheInterceptor.class);

@Override
public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable {
log.info(this.getClass().getName() + " intercept.");
if (command.getValue() instanceof Car) {
return null;
} else {
return invokeNextInterceptor(ctx, command);
}
}

}

我的缓存定义 ( infinispan.xml)

 <namedCache name="mycache">
<customInterceptors>
<interceptor position="FIRST" class="test.HibernateCacheInterceptor">
</interceptor>
</customInterceptors>
</namedCache>

org.infinispan.Cache.put(key,value) 调用到达拦截器,但 hibernate 缓存调用没有到达。 hibernate是否使用不同的API来跳过拦截器?我如何拦截hibernate缓存调用?

最佳答案

不,Hibernate 无法跳过拦截器 - Infinispan 核心的所有逻辑都是由拦截器触发的。

我的猜测是 Hibernate 不使用缓存(当你打开 JConsole 时,你能在 Infinispan 中看到条目吗?),使用另一个缓存(没有拦截器)或在插入到缓存之前缓冲条目。

您可以尝试在 hibernate 和 infinispan 上设置跟踪日志记录。

关于java - Infinispan 自定义拦截器无法与 Hibernate L2 缓存一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674554/

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