/webdav

A simple approach to webdav

Primary LanguageJavaApache License 2.0Apache-2.0

A Simple Approach To WebDAV

Release 0.5

The 0.5 release of the WebDav servlet is available for download as a JAR or via Maven (Sources via GitHub).

This release is the first one to feature our new package naming it.could and provides an experimental way to manage replicated repositories.

Replicated repositories work with a master repository where all your users write to. Every modification made onto this one gets replicated onto a number of different slave repositories (so, add one file, it gets copied on as many servers as you want), and is particularly useful when dealing with a pool of load-balanced servers whose resources must be kept in sync at alltimes.

The documentation is provided as together with the JavaDoc, and there is an overall page describing the installation process.

In some cases it's really essential to have a small and quick way to access files in a web application through the WebDAV protocol.

Currently, though, there are only two alternatives in the Java world to achieve this: either one relies on the WebDAV capabilities built in Apache Tomcat or relies on Apache Slide.

I tend to use Jetty on production (given that I find it more reliable and performant than Tomcat), and for what I need, Slide is way too big, so, a couple of months ago, out of desperation, I decided to write my own tiny WebDAV servlet.

My implementation does not in any way try to replace or extend Slide, it only tries to provide a very light and extremely minimal alternative to it, useable in those scenarios where space is a constraint (the .jar file is less than 100 kylobites), and advanced features are not required.

Originally, I would have liked to have this servlet hosted alongside Slide, but after talking about it on the mailing list, filed an improvement request and waiting for more than a month, I had no reply. I know now that the main reason of this silence was because Slide has a different aim in life (big and feature compliant, rather than minimal and barely covering essentials), so, here we are, back "at home"...

Limitations

The most visible limitations of this approach is that this implementation does not offer any support for the LOCK method (it is therefore not DAV Level 2 compliant), and that there limited support for properties:

  • The PROPFIND method will only return the read-only getcontenttype, getlastmodified, getcontentlength, getetag and resourcetype properties. * The PROPPATCH method will always fail with a 403 Forbidden error.

Another important limitation is that this implementation will only and exclusively provide access to a File based backend. If you want to deploy your repository on another kind of backend (such as SQL databases) please look at the WebDAV implementation provided by Apache Slide.