[Java] TomcatでWebDAVサーバーを動かす | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

WebDAVを使う理由
インターネット上でファイル転送を行う場合、FTPを使うのが一般的ですが、最近このFTPに代わるファイル転送方法としてWebDAVを使う事例が徐々に増えつつあります。

なぜFTPの代わりにWebDAVなのかというと、それはWebDAVがHTTPの拡張プロトコルであり、HTTPのポートだけを開放しておけばファイル転送が行えるという利点が大きいように思います。

何かとセキュリティ対策に気を使わなければならない昨今のインターネットの実情を考えると、企業が不要な穴(ポート)はできるだけ閉じておきたいという風に考えるのは当然のことです。

しかし、WebDAVを使えば、そういった厳しいセキュリティ対策を採る企業でも(HTTPのポートさえ開いていれば)外部とのファイル転送が実現できるというわけです。

TomcatでWebDAVを使う
WebDAVを使ってファイル転送を行うには、WebDAVサーバーとWebDAVクライアントが必要になります。

といっても、両者とも特別に何かを導入しなければならないというような敷居の高いものでもありません。

WebDAVクライアントについてはOSやWebブラウザが標準でサポートしていたりしますし、WebDAVサーバーについてもWebサーバーやアプリケーションサーバーが標準でサポートしていたり、オプション機能として用意されていたりします。


もちろん、TomcatでもWebDAVをサポートしています。

TomcatにはWebdavServletというWebDAVサーバー機能を実現するサーブレットが実装されており、これを適切に設定することによってWebDAVを使ったファイル転送を実現することができるようになっています。


TomcatのWebdavServletの具体的な設定方法については@ITの以下の記事が参考になるかと思います。

連載:現場に活かす Jakarta Project 第11回 TomcatでWebDAVを実現

フォルダごとにアクセスできるユーザーやロールを設定することもでき、そこそこ使えそうです。


ただし、上記の記事はTomcat4.1について書かれたものですので、Tomcat 5.5を使う場合はシンボリックリンクをたどれるようにするための設定方法が以下のとおり若干異なります。

$CATALINA_HOME/conf/server.xml

Tomcat4.1
<Context path="/webdav" docBase="webdav" debug="0"
         reloadable="false" crossContext="true">
  <Resources className="org.apache.naming.resources.FileDirContext"
             allowLinking="true" />
</Context>

Tomcat5.5.x
<Context path="/webdav" docBase="webdav" debug="0"
  reloadable="false" crossContext="true" allowLinking="true" />


これには結構はまってしまいましたが、この記事に救われました。

http://bonsara.seesaa.net/article/3678396.html


こんな仕様変更、やめてほしいですよね^^;