JavaベースのWebDAVサーバ・Jakarta Slide

 Jakarta Slideは、 100%純粋Javaで書かれた、 WebDAVプロトコルによるするデータ管理を実現するためのソフトウェアの集合体です。 次のようなものが含まれます。

  • 階層的なデータ・ストレージを備えたコンテンツ管理システムとそのAPI
  • コンテンツ管理システムを公開するためのWebDAVレベル2を実装したサーブレット
  • Java言語向けのWebDAVクライアントAPI
  • WebDAVコマンドライン・クライアント
つまり、Slideを入手すれば、JavaベースのWebDAVクライアントと、 同じくWebDAVサーバを使うことができるようになる、というわけです。

 また、 SlideはJakarta Tomcat などのJ2EEサーブレットコンテナに簡単に単独のWebアプリケーションとして簡単に配備することができ、 可搬性も十分備えたWebDAVサーバとして便利に使うことができます。

 上記のホームページに行くと、Slideは大きく3種類のアーカイブが配布されています。 1つはWebDAVクライアント、 つまりWebDAVサーバに接続するアプリケーションを開発するためのクラスライブラリと、 それを使って作られたコマンドラインアプリケーション (FTPプロトコルにおけるftpコマンドのようなもの)です。 2つめはWebDAVサーバのためのクラスライブラリと、 それを使って作られたWebアプリケーション(WebDAVサーバの役割をするサーブレット)です。 3つめは、そのWebDAVサーバのWebアプリケーションを、 Jakarta Tomcatにバンドルしたもの (どちらにどちらをバンドルしたのかというのはややこしくなるので深く考えないで下さい) で、TomcatにWebDAV認証ユーザなどの初期設定を追加して同梱したものです。 このページでは、WebDAVサーバとしては2番目の配布物を利用します。 つまり、既にセットアップされ稼動しているJakarta Tomcatに、 Slide WebDAV Webアプリケーションを載せて動かします。


WebDAVクライアントを使う

 それでは、まずApache Web Serverなど、WebDAVサーバとして機能している、 Slide以外のサーバーアプリケーションがある場合、 それにSlideに同梱のコマンドライン・クライアントで接続してみます。 環境はWindowsXP Home Edition、使用するSlideのバージョンは2.1b1、J2SE SDK 1.4.2_03です。
 上記ホームページからjakarta-slide-webdavclient-2.1b1-bin.zipをダウンロードして、 任意のディレクトリで展開します。 そして、client/binディレクトリに、次のようなバッチファイルを作ります。

set CP2=%CLASSPATH%;../lib/jakarta-slide-webdavlib-2.1.jar
set CP2=%CP2%;../lib/jakarta-slide-commandline-2.1.jar
set CP2=%CP2%;../lib/commons-httpclient.jar
set CP2=%CP2%;../lib/commons-logging.jar
set CP2=%CP2%;../lib/antlr.jar
set CP2=%CP2%;../lib/jdom.jar
C:\jdk1.4\bin\java -classpath %CP2% org.apache.webdav.cmd.Slide %1 %2 %3 %4 %5 %6 %7 %8 %9

(ファイル名が実在のものと微妙に違う場合、適当に合わせて下さい)

 コマンドプロンプトで、上記のバッチファイルを引数をつけずに実行すると、 次のようなプロンプトが出ます。

[ Slide ] $

「help」と打つとヘルプが出ます。これは一般的なUNIX上のftpコマンドと同じです。 他のコマンドも、ftpコマンドとよく似ているので、 ftpコマンドか、コマンドラインのWebDAVクライアント「cadaver」 に慣れている方なら、すぐに把握できると思います。
 WebDAVサーバに接続するのも、ftpコマンドでおなじみの 「open」(またはconnect)コマンドを使います。

open	http://localhost/davroot
UserName: uranodav
Password: ********(実際にはhideされない)

[LOCALHOST] /davroot/ $

 そして、ファイルの送信・受信も「put」「get」コマンドで行えます。

get hello.txt
Downloading '/davroot/hello.txt' to 'hello.txt': succeeded.
put hello2.txt
Uploading 'hello2.txt' to '/davroot/hello2.txt': succeeded.
exit


WebDAVサーバとして使う

 次に、SlideをWebDAVサーバとして使う方法です。 ここで、実行するOSはWindows XP Home Edition、 使用するサーブレットコンテナはJakarta Tomcat 5.0.25、 そのルートディレクトリを $CATALINA_HOME と表記します。

 Slideの配布アーカイブ jakarta-slide-server-2.1b1.zipを展開し、中に含まれている、 webapp/slide.war(と必要ならslide-doc.war) を $CATALINA_HOME/webapps にコピーし、Tomcatを(再)起動します。

 slide-doc.warを配備しているとこれが展開され、slide-docディレクトリが作られます。 「http://{hostname}:{port}/slide-doc」にWebブラウザでアクセスすると、 Jakarta Slideのホームページと同じドキュメントを見ることができます。

 「http://{hostname}:{port}/slide」にWebDAVクライアントで接続してみます。 Slideのバージョン2.0までは、初期設定ではユーザ認証不要でしたが、 2.1からは認証が必要になっています。 それは「root」「guest」「user」と名づけられた3つのロールのうちどれかを持つユーザによる認証が必要みたいです。


ユーザ認証の設定方法

  1. Tomcatのデフォルトの設定ファイル、$CATALINA_HOME/conf/tomcat-users.xml (このファイル名はTomcat自身の設定ファイル、server.xmlで変更できます) に、ロールroot,guest,userと、それらのうちどれかを持つユーザを書き加えます。

    <role rolename="root"/>
    <role rolename="guest"/>
    <role rolename="user"/>
    <user username="sunaura" password="intel80386" roles="user"/>
    

    婦人服ブランドのsunaunaとは無関係。(誰も聞いてないって)
  2. 上記だけで接続したのでは、「ログインしたユーザの権限を判定できない」と言われ、 403(Forbidden)で蹴られてしまいます。 そこで、Slideアプリケーションのルートに置かれている設定ファイル、 Domain.xmlに2か所書き加えます。その1は以下の部分

    <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/sunaura">
        <revision>
            <property namespace="http://jakarta.apache.org/slide/" name="password">intel80386</property> 
        </revision>
    </objectnode>
    

    を、"/users/john"に対して設定している箇所の下に続けて、書き加えます。 パスワードはtomcat-users.xmlのものと同じにする必要があるのか、 ダミーでよいのかどうかはよく分かりません…
  3. 上記の設定で接続するとログインはできますが、 中のファイル(リソース)を見れるだけで、アップロードしようとすると403で跳ねられてしまいます。 そこで、/filesに対してこのユーザで書き込み可能になるように設定を加えます。

    <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/files">
        <permission action="all" subject="unauthenticated" inheritable="true"/>
    <!-- *** urano 2004-09-19 kokokara. *** -->
        <permission action="all" subject="/users/sunaura" inheritable="true"/>
    <!-- *** urano 2004-09-19 kokomade. *** -->
        <permission action="/actions/write" subject="/roles/user" inheritable="true"/>
        <permission action="/actions/read-acl" subject="owner" inheritable="true"/>
    </objectnode>
    

    以上で設定はOKです。これでログインすれば、/filesの下であれば、 ファイルがアップロードできるようになります。

Open Source Web Architecture Top

(first uploaded 2003/06/29 last updated 2004/09/19, URANO398 - KQ TAURA)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!