无状态会话bean结果缓存?

时间:2009-12-15 15:28:43

标签: java caching jboss java-ee-5

我们正在运行无状态会话Bean以从不同位置检索一些数据。

实现此SLSB缓存的最佳方法是什么?

使用拦截器?使用JBossCache?

我们正在使用JBoss 5.0.1。

2 个答案:

答案 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。