Java 无状态会话bean结果缓存?
我们正在运行一个无状态会话Bean来从不同的位置检索一些数据 为这个SLSB实现缓存的最佳方法是什么 使用拦截器?使用JBossCacheJava 无状态会话bean结果缓存?,java,caching,jboss,java-ee-5,Java,Caching,Jboss,Java Ee 5,我们正在运行一个无状态会话Bean来从不同的位置检索一些数据 为这个SLSB实现缓存的最佳方法是什么 使用拦截器?使用JBossCache 我们使用的是JBoss 5.0.1。无柄会话bean本身不能在调用之间保存数据,因为名称表明它是无状态的。然而。您可以创建一个保存缓存的有状态会话bean,并将该bean传递给无状态bean方法 void someMethod(StateFulBean sfb){ Cache cahce = sfb.getCache(); ... } 在使用EB
我们使用的是JBoss 5.0.1。无柄会话bean本身不能在调用之间保存数据,因为名称表明它是无状态的。然而。您可以创建一个保存缓存的有状态会话bean,并将该bean传递给无状态bean方法
void someMethod(StateFulBean sfb){
Cache cahce = sfb.getCache();
...
}
在使用EBJ 3.1时,您还可以使用单例注释并将缓存作为单例注入无状态会话bean。无柄会话bean本身不能在调用之间保存数据,因为名称表明它是无状态的。然而。您可以创建一个保存缓存的有状态会话bean,并将该bean传递给无状态bean方法
void someMethod(StateFulBean sfb){
Cache cahce = sfb.getCache();
...
}
在使用EBJ 3.1时,您还可以使用Singleton注释并将缓存作为Singleton注入无状态会话bean。从技术上讲,您可以在无状态会话bean中保留状态,只是在调用之间容器可能会清除状态。因此,您不应该将缓存本身保留在bean中,因为它可能会消失 由于您已经在使用JBoss Appserver,JBossCache似乎是这里的赢家。您可以使用jboss服务描述符配置JBossCache实例,然后您的EJB可以从JMX/JNDI中查找缓存实例。它已经包含在JBossAS中,因此不需要额外的依赖项
如果您感兴趣的话,使用JBossCache还可以增加跨集群分布的缓存的额外好处。从技术上讲,您可以在无状态会话bean中保留状态,只是在调用之间容器可以清除状态。因此,您不应该将缓存本身保留在bean中,因为它可能会消失 由于您已经在使用JBoss Appserver,JBossCache似乎是这里的赢家。您可以使用jboss服务描述符配置JBossCache实例,然后您的EJB可以从JMX/JNDI中查找缓存实例。它已经包含在JBossAS中,因此不需要额外的依赖项
如果您感兴趣的话,使用JBossCache还可以增加跨集群分布的缓存的额外好处。EJB中提到的“状态”是会话状态,而不是对象状态。SLSB可以有任意多个状态,只是在同一个bean的两个不同调用之间无法生存的状态。我指的是对话状态。也许我表达得不清楚,但由于我不是以英语为母语的人,请原谅,EJB中提到的“状态”是会话状态,而不是对象状态。SLSB可以有任意多个状态,只是在同一个bean的两个不同调用之间无法生存的状态。我指的是对话状态。也许我表达得不清楚,但由于我不是以英语为母语的人,请原谅。是否有任何现有的拦截器可以实现这一点?(例如,使用方法参数作为缓存键的拦截器…)我不希望将业务代码与缓存代码混用。我不知道有这种现成的东西,但JBoss EJB拦截器非常容易编写,因此您可以自行开发。是否有现有的拦截器可以实现这一点?(例如,使用方法参数作为缓存键的拦截器…)我不希望将业务代码与缓存代码混用。我不知道这种现成的东西,但JBoss EJB拦截器非常容易编写,因此您可以自己编写。