hibernate - 缓存条目未使用

标签 hibernate jsf jboss ejb

我们有一个使用以下技术的 Web 应用程序:JSF 2.0、EJB 3.1、JPA 2.0、JBoss AS 7.1 Final

有时我们会突然出现以下异常:

09:46:29,664 ERROR [org.jboss.ejb3.invocation] (http-10.99.0.10-10.99.0.10-8080-14) JBAS014134: EJB Invocation failed on component VehicleServiceBean for method public abstract java.util.List com.hji.common.service.VehicleService.findVehiclesBySearchCriteriaAndImporterIds(com.hji.common.domain.repository.VehicleRepository$VehicleSearchCriteria,java.lang.String,java.util.List,boolean): java.lang.IllegalStateException: JBAS014531: Cache entry {[36, -111,
-104, -128, 61, -17, 73, 29, -101, 52, -7, -106, 46, -3, 44, -22]} is not in use
          at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:134) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:56) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:76) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:39) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.component.stateful.StatefulSessionSynchronizationInterceptor.releaseInstance(StatefulSessionSynchronizationInterceptor.java:197) ...
**Caused by: java.lang.IllegalStateException: JBAS014531: Cache entry {[36, -111, -104, -128, 61, -17, 73, 29, -101, 52, -7, -106, 46, -3, 44, -22]} is not in use**
          at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:134) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:56) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:76) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final]
          at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:39) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] ...

我已经在网上搜索了一段时间,但找不到任何解决方案。有人知道这种错误吗?

最佳答案

我一直在四处寻找,因为我也遇到了类似的问题。我只找到了两种可能的解释:要么你的有状态 bean 超时(在 AS7.1 上默认为 5000 秒),要么你将对 SFSB 的引用从一个线程传递到另一个线程 - 这(建议在the jboss forum 是不允许的。如果是前者,要么增加超时,要么捕获异常。如果是后者,让 jboss 在需要的地方注入(inject)有状态 bean,而不是传递它。

我遇到的问题是这两个都不适合我。我的测试设置中只有一个有状态 bean,它被单独注入(inject)到各种无状态 bean 中 - 并且我可以在开始测试运行后几秒钟内生成异常。我仍在尝试找出哪里出错了 - 如果您找到了问题的替代解决方案,可以将其发布吗?

Rgds,詹姆斯

我已经将范围缩小到并发访问 - 我可以发出大量顺序请求,但在此之前只能发出一些“并发”请求。 (我将并发放在引号中,因为我正在同步 @SessionScoped ejb 持有的锁,因此唯一可能的并发调用是我在其上创建的 getLock() 方法。

我对 Weld 是否允许或阻止并发访问 @SessionScoped @Stateful EJB 感到完全困惑。我读到 Seam 序列化了访问(Weld 是从 Seam 中诞生的),但不知道实际情况是否如此。如果是的话,那么就有其他原因导致我的 bean 死亡。不过,通过从单独的 @Stateless bean 进行并发访问,可以轻松地重现它。

关于hibernate - 缓存条目未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426193/

相关文章:

java - Hibernate JPA 删除分离对象时没有异常

html - 寻找 JSF/RichFaces 控件来弹出输入字段

java - 单击运行 JS 函数清除表单的按钮后, View 无法恢复

css - PrimeFaces 如何更改咆哮的关闭图标颜色

java - 如何维护 Drools 决策表的版本

java - 对于 Camel 路由输入端点的 JBoss 嵌入式 MQ 进行 jndi 查找时出现问题

mysql - Hibernate 不产生级联

java - Hibernate 'Cannot Release Connection' 异常?

java - hibernate何时从内存中删除分离的对象?非唯一对象异常

jboss - 我可以在 WildFly 8.2 上安装 apiman 1.0.0.Beta1