java – 在多用户环境中使grails服务方法成为原子

weixin_38050362 2019-09-12 12:57:53
我有一个grails服务方法,load,我一次只希望一个用户能够运行.我曾尝试使用Grails悲观锁,但它有时只能工作.在我的控制器中,我有: try { def country = Country.lock(id) myService.load(country) } catch (CannotAcquireLockException ex) { flash.message = "Another user is modifying ${Country.get(id)}" } 使myService的load方法成为原子的最佳方法是什么? 如果我想要两个方法是原子的(当一个方法执行时,都不能执行),该怎么办? 我的服务方法: def load(id) { def country = Country.get(id) country.states.each { ... it.save(flush: true) } } 将synchronized关键字添加到此方法会导致保存上的StaleObjectStateException.
...全文
34 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38060792 2019-09-12
  • 打赏
  • 举报
回复
Grails服务默认为单身,负责部分问题.您还应该使您的服务方法同步以实现您想要的: def synchronized load(country) { ... }

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧