[英]Domino synchronization. How to convert Lotusscript functions like CodeLock to Java?
This class for syncronization in Lotusscript, create Lock for document by document ID.这个 class 用于 Lotusscript 中的同步,通过文档 ID 为文档创建锁定。 Implement functional: only one agent can simultaneously change document or documents under the lockID to database.实现功能:只有一个代理可以同时将lockID下的一个或多个文档更改为数据库。
Class classSynchronization
Private lockName As String
Private lockID As Integer
Function getCount As long
getCount = CodeLockCheck(Me.lockID)
End Function
Function Wait As Boolean
Wait = CodeLock(Me.lockID)
End Function
Sub New( lockNameID As String)
Me.lockName = lockNameID
Me.lockID = CreateLock(Me.lockName)
' MsgBox "Synchronization Lock: "+ Me.lockName+ " Count in queue: " + CStr (CodeLockCheck(Me.lockID) )
End Sub
Sub Delete()
Dim releaseLock As Boolean
Dim deleteLock As Boolean
' MsgBox "Synchronization Release Lock: "+ Me.lockName+ " Count in queue: " + CStr (CodeLockCheck(Me.lockID) )
' When we are finished, destroy this reference to the lock
releaseLock = CodeUnlock(Me.lockID)
deleteLock = DestroyLock(Me.lockID)
End Sub
End Class
How to convert this class to Java class in domino?如何在多米诺骨牌中将此 class 转换为 Java class?
There are no direct Java equivalents to the builtin locking (CodeLock, CodeUnLock, DestroyLock, CreateLock, DestroyLock...) functions in LotusScript. LotusScript 中没有与内置锁定(CodeLock、CodeUnLock、DestroyLock、CreateLock、DestroyLock...)函数直接等效的 Java。 You will need to learn about Java's synchronization primitives, analyze your application's synchronization requirements, and find the best fit to accomplish what your application requires.您将需要了解 Java 的同步原语,分析您的应用程序的同步需求,并找到最适合您的应用程序所需的东西。
No Effect没有效果
import lotus.domino.*;
import java.util.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document doc = agentContext.getDocumentContext();
String lock = doc.getNoteID();
synchronized (lock) {
for (int i = 1; i < 10; i++){
System.out.println(lock + " " + session.getEffectiveUserName() + " " + Integer.toString(i));
Thread.sleep(1000);
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Result:结果:
[002413:000171-00007F99DC253700] 12/03/2021 11:47:51 PM HTTP JVM: 46AFE CN=Administrator/O=test 1
[002413:000171-00007F99DC253700] 12/03/2021 11:47:52 PM HTTP JVM: 46AFE CN=Administrator/O=test 2
[002413:000171-00007F99DC253700] 12/03/2021 11:47:53 PM HTTP JVM: 46AFE CN=Administrator/O=test 3
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:54 PM HTTP JVM: 46AFE CN=User 3/O=test 1
[002413:000171-00007F99DC253700] 12/03/2021 11:47:54 PM HTTP JVM: 46AFE CN=Administrator/O=test 4
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:55 PM HTTP JVM: 46AFE CN=User 3/O=test 2
[002413:000171-00007F99DC253700] 12/03/2021 11:47:55 PM HTTP JVM: 46AFE CN=Administrator/O=test 5
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:56 PM HTTP JVM: 46AFE CN=User 3/O=test 3
[002413:000171-00007F99DC253700] 12/03/2021 11:47:56 PM HTTP JVM: 46AFE CN=Administrator/O=test 6
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:57 PM HTTP JVM: 46AFE CN=User 3/O=test 4
[002413:000171-00007F99DC253700] 12/03/2021 11:47:57 PM HTTP JVM: 46AFE CN=Administrator/O=test 7
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:58 PM HTTP JVM: 46AFE CN=User 3/O=test 5
[002413:000171-00007F99DC253700] 12/03/2021 11:47:58 PM HTTP JVM: 46AFE CN=Administrator/O=test 8
[002413:000173-00007F99DC4C7700] 12/03/2021 11:47:59 PM HTTP JVM: 46AFE CN=User 3/O=test 6
[002413:000171-00007F99DC253700] 12/03/2021 11:47:59 PM HTTP JVM: 46AFE CN=Administrator/O=test 9
[002413:000173-00007F99DC4C7700] 12/03/2021 11:48:00 PM HTTP JVM: 46AFE CN=User 3/O=test 7
[002413:000173-00007F99DC4C7700] 12/03/2021 11:48:01 PM HTTP JVM: 46AFE CN=User 3/O=test 8
[002413:000173-00007F99DC4C7700] 12/03/2021 11:48:02 PM HTTP JVM: 46AFE CN=User 3/O=test 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.