Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无状态会话bean结果缓存?_Java_Caching_Jboss_Java Ee 5 - Fatal编程技术网

Java 无状态会话bean结果缓存?

Java 无状态会话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

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

为这个SLSB实现缓存的最佳方法是什么

使用拦截器?使用JBossCache


我们使用的是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拦截器非常容易编写,因此您可以自己编写。