关于NCCloud环境中单据生成后生成莫名其妙的PK锁的处理

NCCloud莫名其妙的PK锁

关于NCCloud环境中单据生成后生成莫名其妙的PK锁

问题描述

项目中偶尔会遇到生成单据后生成某用户的PK锁,导致单据不能进一步修改的问题,而且该PK锁不会被任何用户解锁。

处理方法

项目中有两种解决方法,一种是由集团出具补丁,一般是集团修改了hotwebs\nccloud\WEB-INF\classes\nccloud\web\riasm\sysmonitor\action\ClearLock.java类,打上该补丁后仍需要在“动态建模平台”>“系统管理”>“系统监视器”节点中通过对应用户的账号登录来手动解锁;
解PK锁界面
另一种方法是尝试在修改保存动作开始时通过代码去进行解锁,具体实现为:

			PKLock lock = PKLock.getInstance();
			BaseDAO dao = new BaseDAO();
			//这里使用的是默认用户“yonyou”,生成的PK锁也是该用户的PK锁,需要查询到对应的cuserid
			String sql = "select cuserid from sm_user where user_code = 'yonyou'";
			String cuserid = (String)dao.executeQuery(sql, new ColumnProcessor());
			//查询默认数据源,数据源不可能是空故没有进行判空
			String[] dsName = ServerConfiguration.getServerConfiguration().getDataSourceNames();
			LockableVO[] allLockVOs = lock.getUserLockVOs(cuserid,dsName[0]);
			//下边这一行比较重要,如果没有这一行可能会导致“yonyou”的PK锁解不掉
			InvocationInfoProxy.getInstance().setUserId(cuserid);
			for (int i = 0;allLockVOs !=null && i < allLockVOs.length; i++) {
				LockableVO lockableVO = allLockVOs[i];
				lock.releaseLock(lockableVO.getLockable(), cuserid, dsName[0]);
			}

本次的项目上由于版本的问题,一开始无论任何用户都不能解锁,故两种方式全都使用了,集团的补丁解决的无论任何用户都不能解锁的问题,代码实现了修改保存的时候针对默认用户“yonyou”的PK锁解锁问题,免去了频繁登录该用户去解锁的操作,希望能对受到类似问题困扰的朋友有所帮助。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值