1

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

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

使用拦截器?使用 JBossCache 吗?

我们正在使用 JBoss 5.0.1。

4

2 回答 2

1

从技术上讲,您可以在无状态会话 bean 中保留状态,只是状态可能会在调用之间由容器清除。因此,您不应该将缓存本身保留在 bean 中,因为它可能会消失。

由于您已经在使用 JBoss Appserver,因此 JBossCache 似乎是明显的赢家。您可以使用 jboss 服务描述符配置 JBossCache 实例,然后您的 EJB 可以从 JMX/JNDI 查找缓存实例。它已经全部包含在 JBossAS 中,因此不需要额外的依赖项。

如果您对此感兴趣,使用 JBossCache 还可以为您提供分布在集群中的缓存的额外好处。

于 2009-12-15T17:26:54.810 回答
0

steteless session bean 本身不能在调用之间保存数据,因为顾名思义它是无状态的。然而。您可以创建一个有状态的会话 bean 来保存您的缓存并将这个 bean 传递给您的无状态 bean 方法。

void someMethod(StateFulBean sfb){
  Cache cahce = sfb.getCache();
  ...

}

使用 EBJ 3.1 时,您还可以使用 Singleton 注释并将缓存作为单例注入到无状态会话 bean 中。

于 2009-12-15T15:48:00.457 回答