露天中LockService和JobLockService之间的区别是什么?如果我已经存在一个节点,我可以使用它们两者代表创建的其他节点的序列,并且必须在getNextSequence()之前锁定该节点? / p>
例如:
Node sequenceNode = getSequenceNode();
LockService(sequenceNode);
Node aNode = new Node(new NodeRef(...));
Map<QName,serialzable> props = new HashMap<QName,Serializable>();
props.put(...,sequenceNode.getNextSequence());
nodeService.setProperty(..,..,..,props);
现在,LockService足以让人知道sequenceNode不能被露天网页客户端编辑,只能通过这行代码进行编辑。
您的回复非常感谢。 穆罕默德·阿姆 高级系统开发人员 数码系列公司
答案 0 :(得分:3)
tl; dr:使用LockService并感到高兴,在这种情况下,这对你来说已经足够了。
LockService
旨在获取特定节点上的锁,而JobLockService
用于处理特定任务的并发。更具体地说:
只要您希望在特定节点或一组节点上进行独占访问,就可以使用LockService
。您必须指定要锁定的节点以及要应用的type of lock。一旦您获得一个或多个节点上的锁定,系统将禁止其他用户访问此类节点,并将继续这样做,直到您删除锁定或它过期
当您需要一次只执行一次特定任务时(例如,为了避免并发运行),您使用JobLockService
。此服务处理的锁未绑定到特定节点,并由QNames标识。因此,JobLockService
不会阻止任何节点被访问或修改,而是阻止其他线程或外部应用程序执行相同的任务(前提是它们首先尝试获取相同的锁)。假设您有几个访问存储库的远程系统。 JobLockService
允许您在整个系统网络上强制执行相同的tak。
如果我正确理解您的问题,您有一个节点包含序列号或类似的东西,您需要getNextSequence
可靠地提供下一个标识符。虽然你可以在这里使用这两个服务,但由于关键操作实际上绑定到一个节点(持有序列的节点),我宁愿在这里使用LockService
。