当前位置: 首页 > 知识库问答 >
问题:

使用mysql实现grails服务死锁

何烨华
2023-03-14

我试图将一长串文件添加到mysql中,并使用带有grails的spring ACL服务来附加权限。因此,在我的控制器中,我有:

Files.withTransaction {
            Files file = new Files(dataStore:ds,created:new Date(),path:target,name:fileName,contentType:contentType,contentLength:contentLength,isFolder:false).save(flush:true)
            file = Files.lock(file.id)
            filesService.addPermission(file, username ,BasePermission.ADMINISTRATION)
        }

我不用担心Files domain对象,它支持大量数据(特别是因为我已经禁用了mysql中的版本控制),问题出在使用aclUtilService的filesService上,

@Transactional
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_USER') or hasRole('ROLE_GROUP_OWNER')")
    def addPermission(Files f, String username,Permission permission) {
        aclUtilService.addPermission f,username,permission
    }

共有1个答案

上官斌
2023-03-14

只是在controller中封装了事务,并在服务中使用@Transactional来解决这个问题:

Files.withTransaction {
                    Files file = new Files(
...
                    if (file.validate()) {
                        file.save()
                        filesService.addPermission(file,username,BasePermission.ADMINISTRATION)

...}
}
 类似资料:
  • 我有一个事务性grails服务,它正在进行一些(长时间运行的)处理。在处理过程中,我想更新一个“percentComplete”值(最终将用于在前端显示进度条)。显然,这必须立即写入(即不作为当前事务的一部分),否则它毫无价值。 因此,我使用Grails事务处理插件,特别是“withNewTransaction”方法来启动一个新事务,其中百分比完成属性被更新。 我的问题是,第二次使用“update

  • 问题内容: 我正在尝试在grails服务中使用g.render,但默认情况下似乎未将g提供给服务。有没有办法让模板引擎在服务中呈现视图?我可能会以错误的方式进行操作。我要寻找的是将视图从部分模板渲染为字符串,并将结果字符串作为JSON响应的一部分发送回去,以与AJAX更新一起使用。 有什么想法吗? 问题答案: 我完全同意John的观点-在服务中执行GSP通常是一个错误的设计决策。但是没有规则没有例

  • 我的grails 2.1.0应用程序是在cloudfoundry中部署和运行的,使用mysql服务,昨天我做了一些更改,更新后无法再次运行。我没有对数据源进行任何更改。 通过查看tomcat日志,看起来数据库设置在部署时没有被覆盖,如文档中所述,并且存在一个异常消息“无法为连接URL“JDBC:h2:prodDb;MVCC=TRUE”创建类为“com.mysql.JDBC.driver”的JDBC

  • 本文向大家介绍配置Mysql主从服务实现实例,包括了配置Mysql主从服务实现实例的使用技巧和注意事项,需要的朋友参考一下 配置Mysql主从服务实现实例 ### 配置主数据库  my.cnf ### 在主数据库上创建同步账号 ### 配置从数据库  my.cnf ### 重启mysql服务 ### 连接Master服务 ### 启动slave服务 ### 查看Master服务状态 ### 查看S

  • 我正在尝试将基于Rest的Web服务应用程序部署到Weblogic控制台12C上。为此,我使用了Spring Jersey实现和Spring依赖注入 在尝试访问我的服务时,我必须使用Weblogic的/resources/*路径,因为/rest/*不起作用。此外,SpringServlet没有被调用,但Weblogic自己的JAX-RS Jersey实现正在工作。我已经检查过了,在应用程序启动期间

  • 本文向大家介绍SpringCloud使用Feign实现服务调用,包括了SpringCloud使用Feign实现服务调用的使用技巧和注意事项,需要的朋友参考一下 Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的