lock

ロック (HTTP)

[8] ロック (lock) は、資源の操作権を管理する仕組みです。

仕様書

意味

[2] 資源ロック (lock) (動詞) することにより、 資源へのアクセスを直列化することができ、他の principal が同時に資源を編集しないこと、すなわち lost update 問題を防ぐことができます。 >>1

[5] ロック (lock) (名詞) は、 直接または間接に資源ロックするものです >>1

[11] ロックは、大域的に固有なロックトークンにより識別されます >>1

分類

[3] ロックは、関与する principal の数により排他的か共有かに分類できます >>1

[13] 排他的ロック (exclusive lock) は、 他の principal のアクセスを排除することによって、 WebDAV の仕組みのみにより変更の衝突を防止するものです >>1

[15] 共有ロック (shared lock) は、他の principal が操作中であることを知らせるだけのものです。この場合 WebDAV 外の方法 (直接の対話やポストイット電子メールなど) によって協調が必要かもしれません。 >>1

[16] 経験上、排他的ロックのみだと何らかの理由でロックが解放されなくなる問題が起こりがちなため、 共有ロックが導入されました >>1排他的ロックでもタイムアウトや管理者操作で解除はできますが、 共有ロックの方がより便利です >>1

[4] ロックは、保証されるアクセスの種類によっても分類できます >>1。 次の種類があります。

[17] WebDAV に従う資源は、 排他的ロック共有ロックのいずれかおよびアクセスの種類の任意の組み合わせについて、 対応してもしなくても構いません。ロックにまったく対応しなくても構いません。 >>1

[18] WebDAV の裏側で用いられているシステムで対応するロックの手法が様々であることから、 実装の柔軟性を認めています >>1

[9] ロックは通常の資源にも、コレクションにも適用されます。

状態

[20] ロックは、次の情報を有します。

[27] ロックに関係して次の特性があります。

操作

[6] ロックLOCK 要求で作成できます。

LOCK を参照。

[26] 要求においてロック提出 (If: ヘッダーロックトークンを指定) することで、 ロックされている資源を操作できます。

[25] クライアントLOCK 要求If: ヘッダーで既存のロックトークンを指定することで、 ロックタイムアウトの更新を求めることができます。 ロックタイムアウトの値を改めて決めて計測を開始します。

ロックの削除

[12] UNLOCK 要求は、指定したロックトークンロックを削除 (破棄) します。 ロックが削除されると、そのロックによる資源ロックは解除されます。 >>1

[10] ロックされているコレクションについてある資源メンバーでなくすると、 その資源コレクションロックによる間接的なロックから除外しなければなりません>>1, >>7

[14] ある要求によってロックロック根写像されない URL となった時、そのロックはその要求によって削除されなければなりません>>1

[45] DELETE によって削除された資源ロック根とするロックは、 DELETE の際に削除されます >>44

[21] ロックを削除できるのは、ロック作成者か、ロックを削除する特権を有する principal です。

[22] ロックタイムアウトが経過したら、 UNLOCK 要求によりロックが削除されたかのように動作しなければなりません >>1

[50] ロックが破棄された場合、 LNR は削除されます >>49

[51] LER は削除されません。

プロトコル

[19] 次のプロトコル要素が主に関係しています。

lockscope 要素 (WebDAV)

[35] DAV: 名前空間lockscope 要素は、ロック排他ロック共有ロックか指定するものです >>33

[36] 内容は、要素内容であり、 exclusive 要素または shared 要素です >>33

  1. |
    1. exclusive
    2. shared

[30] lockscope 要素lockentry 要素 >>29lockinfo 要素 >>32子要素として必要です。

[47] lockscope 要素activelock 要素子要素として必要です >>46

locktype 要素 (WebDAV)

[39] DAV: 名前空間locktype 要素は、ロックのアクセスの種別を指定するものです >>38

[40] 内容は、要素内容であり、 write 要素です >>38

  1. |
    1. write

[31] lockscope 要素lockentry 要素 >>29locktype 要素 >>32子要素として必要です。

[48] lockscope 要素activelock 要素子要素として必要です >>46

exclusive 要素 (WebDAV)

[24] DAV: 名前空間exclusive 要素は、排他ロックを指定するものです >>23

[28] この要素は、空要素です >>23

[34] この要素lockscope 要素子要素として使います >>33

shared 要素 (WebDAV)

[42] DAV: 名前空間shared 要素は、共有ロックを指定するものです >>41

[43] この要素は、空要素です >>41

[37] この要素lockscope 要素子要素として使います >>33

[52] RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) () <https://tools.ietf.org/html/rfc5842#section-9>