2011-08-07 31 views
0

JobLockService用於強制執行同步的策略是什麼?它鎖定整個存儲庫嗎?還是有另一種技術?JobLockService使用什麼策略來強制執行同步?

當我寫代碼使得:

String lockString = jobLockService.getLock(QName.createQName(Prefix,LocalName, Resolver)); 
LockToken lockToken = new LockToken(); 
lockToken.set(lockString); 
// Something going here such as create a node or update or delete 
// another somethign processes here 
jobLockService.releaseLock(lockString); 

正如你可以從代碼我使用JobLockService注意到發生了什麼事,一旦獲取鎖?它是否鎖定存儲庫並阻止任何其他存儲庫訪問存儲庫?

我在詢問用於實現同步的實際技術。

另外,什麼是在這裏LockToken?它有什麼好處?

在此先感謝,您的回覆非常感謝。

回答

2

JobLockService確實不是對存儲在存儲庫中的實際內容進行鎖定,更不用說鎖定整個存儲庫。成功調用JobLockService.getLock之後,任何線程都可以自由更新要編輯的節點。您的代碼必須確保必須以受控併發執行的塊首先嚐試獲取相同的鎖。

LockToken你創建的對象似乎沒用,可以丟棄。

+0

Skuro,是否有任何需要刷新鎖定,因爲代碼將按順序進行,並且我的代碼中沒有等待過程。你能給我一個代碼狙擊要求刷新鎖 –

+0

當你得到鎖,你可以指定多久你想要它。除非你做的事情非常慢(分鐘+),否則你可能只想鎖定和超時 – Gagravarr