我正在构建Java EE应用程序,并希望使用JSR107的@CacheResult批注“透明地”向我的服务层添加一些缓存。这是我的第一个“全功能” Java EE应用程序,我通常在Spring工作,注释处理似乎要容易得多;)
所以,这是我的软件堆栈:
Wildfly 8.1
项目清单
EHCache 2.8
EHCache-JCache
JSR 107参考实现+注释处理(https://github.com/jsr107/RI/tree/master/cache-annotations-ri)
...这是我的EAR的布局:
根目录包含一些EJB / CDI bean罐
/ lib包含所有必需的库
根级别jar之一中的其中一个bean包含一些用@CacheResult注释的方法,该方法的参数是String
我的问题:没有缓存发生;)
具体问题:
这里有没有人得到过我用来成功协作执行缓存的软件堆栈?
有没有办法让我获取有关侦听器处理期间内部正在发生的事情的更多调试信息?我尝试了各种记录器配置,并挖掘了我正在使用的框架的来源,但似乎错过了基本要点。
提前致谢
斯文
更新资料
如果我将@Interceptors(CacheResultInterceptor.class)显式添加到服务bean,它将起作用。但是,不需要以这种方式声明我自己的拦截器(在同一个jar文件中),相应的拦截器绑定类型就足够了。如果我尝试使用驻留在外部jar中的拦截器,会有区别吗?
最佳答案
我在这里找到了具有正确答案的相关问题:https://stackoverflow.com/a/12081608/2290153
相关规范为http://docs.jboss.org/cdi/spec/1.0/html/interceptors.html,重要部分为9.4节。
在bean.xml中指定CacheResultInterceptor(全限定名),它应该可以工作。