具有扩展持久性上下文的有状态EJB可以处理用户会话
|
我正在使用CDI会话作用域bean来保存与用户相关的信息(他的用户实体bean,凭证等)。每当用户更改其信息(例如电子邮件,密码等)时,我都有一个保存方法。
但是,我可以使用带有扩展持久性上下文的有状态会话Bean来实现。如果这样做,他的用户实体将在他的会话期间得到管理,对他的电子邮件等的更改将被同步,而无需重新创建持久性上下文等。
这是一个好主意吗?我应该开放这么长时间的扩展持久性上下文吗?这也将更改锁定给外部Bean的用户,对吗?如果我有一个管理员试图对此用户进行更改怎么办(可能会发生)。
没有找到相关结果
已邀请:
2 个回复
蕾跨立锌煤
陷牡彭拈峰
没有交易) 某些外观方法显式启用了事务处理(例如
具有翻译) 发生的事情是: 在对话的整个持续时间内,实体将被加载并保持受管理状态(由持久性上下文完全缓存,在没有事务的情况下,持久性上下文将不会刷新)。 如果(并且仅出于示例目的)保存了一个实体,则将显式打开一个事务,并且如果事务成功,则持久化上下文将刷新到db中。 如果确实进行了其他任何编辑(例如,由管理员执行),则将抛出
并由应用程序处理 这就像一个假面,并且感觉也很优雅:-) 一句话警告-因为EM不可序列化-*如果*您在集群中工作,则将不得不使用粘性会话策略,因为这些EJB无法从一台服务器移动到另一台服务器其他。 您可能还想考虑使EM加入现有事务的某种方法(如果每个请求有多个服务调用,这很容易发生)。如果使用非Seam 3堆栈,则可以选择代理EM;如果使用Seam 3,则使用
(焊锡)代替S4ѭ,并检查是否有要加入的交易。