如何强制JBoss4.2.3清除hibernate';为每个请求创建会话缓存?

如何强制JBoss4.2.3清除hibernate';为每个请求创建会话缓存?,hibernate,caching,jboss,entitymanager,Hibernate,Caching,Jboss,Entitymanager,在我看来,JBoss对多个请求重用实体管理器和底层hibernate会话。我已经运行了一个测试,该测试证明在某些情况下,即使只是使用em.find()获取实体,实体的状态也可能过时 如何禁用此行为并强制清除或丢弃已使用的会话,以确保每个请求都使用清除缓存处理 UPD: 下面是一个例子 HTTP请求1。会话bean创建一个实体实例,并使用字段“A”将其存储为值1。持久化实体获取ID=4 HTTP请求2。会话bean查找ID=4的实体,将其字段“A”设置为值2并保存它 HTTP请求3。会话bean查

在我看来,JBoss对多个请求重用实体管理器和底层hibernate会话。我已经运行了一个测试,该测试证明在某些情况下,即使只是使用
em.find()
获取实体,实体的状态也可能过时

如何禁用此行为并强制清除或丢弃已使用的会话,以确保每个请求都使用清除缓存处理

UPD:

下面是一个例子

HTTP请求1。会话bean创建一个实体实例,并使用字段“A”将其存储为值1。持久化实体获取ID=4

HTTP请求2。会话bean查找ID=4的实体,将其字段“A”设置为值2并保存它

HTTP请求3。会话bean查找ID=4的实体并检查其字段“A”。如果值为1,它做一件事,如果值为2,它做另一件事


如果请求3中的EM恰好与请求1中的EM相同,则会发生意外行为。我对此进行了测试,获得了大约10%的失败案例。

您是否尝试了中的对象?

您是否尝试了中的对象?

好的,我找到了。JBoss正确处理会话,我的测试中有一个bug=)对不起,谢谢你的帮助

好的,我解决了这个问题。JBoss正确处理会话,我的测试中有一个bug=)对不起,谢谢你的帮助

我用一个例子更新了这个问题,解释了为什么您使用的是扩展持久性上下文(它绑定到会话bean生命周期,因此将具有您描述的行为)但您希望事务范围为:。我没有在@PersistenceContext注释中显式指定PersistenceContextType。据我所知,事务范围是默认的。我所有的会话bean都是无状态的,我用一个例子更新了这个问题,解释了为什么您使用的是扩展持久性上下文(它绑定到会话bean生命周期,因此将具有您描述的行为)但您希望事务范围为:。我没有在@PersistenceContext注释中显式指定PersistenceContextType。据我所知,事务范围是默认的。我所有的会话bean都是无状态的,您将如何和何时(何地)实现我在问题中所述的目标?您将如何和何时(何地)实现我在问题中所述的目标?