この節では、WebDAV を扱う際に目にする一般的な用語について、簡単に説明します。
URI: URI (Uniform Resource Identifier) はファイル識別子の 1 つであり、省略形の URL を使用することで追加のセキュリティー層を提供します。URL の最初の部分が URL マッピングで置換されるため、ファイルの完全な物理パス名がユーザーからわからないようになります。
ソース URI: ソース URI という用語は、リソースのソースへのアクセスが可能な URI を意味します。ソース URI の概念を理解するために、次のような例を考えます。
JSP ページ foo.jsp が URI /docs/date.jsp に格納されています。このページには HTML マークアップと Java コードが含まれていますが、この Java コードは実行時に、クライアントのブラウザ上に現在日付を出力します。サーバーは、foo.jsp の GET 要求をクライアントから受信すると、そのページを送信する前に Java コードを実行します。クライアントが受信するのは、サーバー上に存在している状態の foo.jsp ではなく、動的に生成された、現在日付が表示されたページです。
たとえば、/publish/docs というソース URI を作成し、それを foo.jsp を含む /docs ディレクトリにマップした場合、/publish/docs/foo.jsp に対する要求は、/docs/foo.jsp JSP ページのソースコードに対する要求になります。この場合、サーバーは Java コードを実行せずにページを送信します。クライアントは、ディスク上に格納された状態のままの、未処理のページを受信します。
したがって、ソース URI に対する要求は、リソースのソースに対する要求になります。
コレクション: WebDAV コレクションとは、WebDAV 操作に対応したリソースまたは一連のリソースのことです。コレクションには一連の URI が含まれますが、これらはメンバー URI と呼ばれ、WebDAV に対応した各メンバーリソースを識別します。
メンバー URI: コレクション内の一連の URI のメンバーになっている URI。
内部メンバー URI: コレクションの URI の直接の相対パスになっているようなメンバー URI。たとえば、URL http://info.sun.com/resources/info のリソースが WebDAV に対応しており、URL http://info.sun.com/resources/ のリソースも WebDAV に対応している場合、URL http://info.sun.com/resources/ のリソースはコレクションであり、http://info.sun.com/resources/info を内部メンバーとして含みます。
プロパティー: リソースについての記述情報を含む名前と値のペア。プロパティーは、リソースの検索や管理を効率的に行うために使用されます。たとえば、「creationdate」プロパティーを使えば、すべてのリソースのインデックス作成をリソースの作成日付に基づいて行えますし、「author」プロパティーを使えば、それを作成者名に基づいて行えます。
ライブプロパティー:サーバーによって管理されるプロパティー。たとえば、getcontentlength ライブプロパティーはその値として、GET 要求によって返されるエンティティーの長さを持ちますが、この値はサーバーによって自動計算されます。ライブプロパティーには次のものがあります。
値がサーバーによって維持される、読み込み専用のプロパティー
値がクライアントによって維持されるプロパティー。ただし、サーバーは送信されてきた値に対して構文チェックを実行します。
デッドプロパティー:サーバーによって管理されないプロパティー。デッドプロパティーの場合、サーバーはその値を記録するだけです。その整合性を維持する責任はクライアントにあります。
Sun Java System Web Server がサポートするライブプロパティーは、次のとおりです。
creationdate
displayname
getcontentlanguage
getcontentlength
getcontenttype
gettag
getlastmodified
lockdiscovery
resourcetype
supportedlock
executable
Sun Java System Web Server がサポートするライブプロパティー executable を使えば、クライアントがリソースに関連付けられたファイルアクセス権を変更できます。
executable ライブプロパティーに対する PROPPATCH 要求の例を、次に示します。
PROPPATCH /test/index.html HTTP/1.1
Host: sun
Content-type: text/xml
Content-length: XXXX
<?xml version="1.0"?>
<A:propertyupdate xmlns:A="DAV:" xmlns:B="http://apache.org/dav/props/">
<A:set>
<A:prop>
<B:executable>T</B:executable>
</A:prop>
</A:set>
</A:propertyupdate>
ロック: リソースをロックする機能は、あるユーザーが編集しているリソースを別のユーザーが変更しないことを保証する機構を提供します。ロックを使えば上書きの衝突を回避でき、「失われた更新」の問題を解決できます。
Sun Java System Web Server がサポートするロックは 2 種類あります。共有と排他です。
新しい HTTP ヘッダー: WebDAV は HTTP/1.1 プロトコルを拡張することで機能します。クライアントが WebDAV リソースに対する要求を伝えるための HTTP ヘッダーが、新たに定義されています。それらのヘッダーを次に示します。
Destination:
Lock-Token:
Timeout:
DAV:
If:
Depth:
Overwrite:
新しい HTTP メソッド: WebDAV では、WebDAV 対応サーバーに要求の処理方法を指示する新しい HTTP メソッドが、いくつか導入されました。GET、PUT、DELETE などの既存の HTTP メソッドに加えてそれらのメソッドを使用することで、WebDAV トランザクションが実行されます。新しい HTTP メソッドの簡単な説明を、次に示します。
COPY: リソースをコピーするために使用されます。コレクションのコピー時には、Depth: ヘッダーが使用され、Destination: ヘッダーによってコピー先が指定されます。COPY メソッドでは、Overwrite: ヘッダーも必要に応じて使用されます。
MOVE: リソースを移動するために使用されます。コレクションの移動時には、Depth: ヘッダーが使用され、Destination: ヘッダーによって移動先が指定されます。MOVE メソッドでは、Overwrite: ヘッダーも必要に応じて使用されます。
MKCOL: 新しいコレクションを作成するために使用されます。このメソッドは、PUT メソッドのオーバーロードを回避するために使用されます。
PROPFIND: 1 つ以上のリソースに属する 1 つ以上のプロパティーを取得するために使用されます。クライアントがあるコレクションの PROPFIND 要求をサーバーに送信する場合、その要求には、0、1、infinity のいずれかの値を持つ Depth: ヘッダーが含まれている可能性があります。
0: 指定された URI のコレクションのプロパティーを取得することを指定します。
1: コレクションのプロパティーと、指定された URI のすぐ下にあるリソースのプロパティーを取得することを指定します。
infinity: コレクションのプロパティーと、そのコレクションに含まれるすべてのメンバー URI のプロパティーを取得することを指定します。無限の実行範囲を持つ要求ではコレクションの全体が検索されるため、サーバーに大きな負荷がかかる可能性があるので、注意が必要です。