我们正在运行无状态会话Bean以从不同位置检索一些数据。
实现此SLSB缓存的最佳方法是什么?
使用拦截器?使用JBossCache?
我们正在使用JBoss 5.0.1。
答案 0 :(得分:1)
从技术上讲,您可以在无状态会话bean中保留状态,只是在调用之间容器可以清除状态。因此,您不应该将缓存本身保留在bean中,因为它可能会消失。
由于你已经在使用JBoss Appserver,JBossCache在这里似乎是明显的赢家。您可以使用jboss服务描述符配置JBossCache实例,然后您的EJB可以从JMX / JNDI查找缓存实例。它已经包含在JBossAS中,因此不需要额外的依赖项。
使用JBossCache还可以为您提供分布在群集中的缓存的额外好处,如果您感兴趣的话。
答案 1 :(得分:0)
无名会话bean本身无法在调用之间保存数据,因为名称表示它是无状态的。然而。您可以创建一个保存缓存的有状态会话bean,并将此bean传递给无状态bean方法。
void someMethod(StateFulBean sfb){
Cache cahce = sfb.getCache();
...
}
使用EBJ 3.1时,您还可以使用Singleton注释,并将缓存作为单例注入无状态会话bean。