Skip to main content

Release 1.0 of WebDAV Support for JAX-RS

Posted by mkarg on February 15, 2009 at 5:44 AM PST

The WebDAV Project has just published the first binary release of "WebDAV Support for JAX-RS". Just two months after coding the first pieces, the team provided a library that fits nicely into the JAX-RS eco system and provides complete WebDAV 1.0 compatibility.

With "WebDAV Support for JAX-RS" you can implement RESTful WebServices which go beyond the limits of simple CRUD. For example, using this library, you easily get a frontend for your application that is browsable by current desktop file managers, like Windows' "Explorer". Your application looks like a file system to the user, what allows to invoke server side actions by simply dragging files around -- even with no additional client software installed.

Jersey Logo

This release also completes the process of migrating the code from being a Jersey module to being a standalone project. From now on, "WebDAV Support for JAX-RS" really can be used with any JAX-RS implementation, without any dependencies on the Jersey project. This opens the project to a larger user community.

WebDAV Logo

While "WebDAV Support for JAX-RS" already implements WebDAV 1.0 completely, there is a lot of open work to do for the next releases, like WebDAV Versioning support etc. So even if you are currently satisfied with the features of 1.0, it might be interesting for you to come back from time to time and check out the latest additions.

See you next time at this place.

Regards
Markus

Related Topics >>

Comments

sardine

fyi, I saw a need, so i've created a really easy to use (and well documented) open source webdav client for java: http://sardine.googlecode.com/ enjoy.

I'm not objecting to different applications of WebDAV but I feel that the lack of some commonly used, basic packages for WebDAV support in Java, maybe but not necessarily in package java.net.webdav or as part of the new file IO in Java 7, is lowering the acceptance of WebDAV. Commonly used packages are usually less error-prone.

Jackrabbit is a server product that provides JCR API. WebDAV is just a side effect in that sense and not the target of Jackrabbit. It does not aim in providing WebDAV out of itself. Milton is a WebDAV server product that has multiple backends and is a spin-off from a CMS system. It does not aim in providing WebDAV outside of itself. "WebDAV Support for JAX-RS" is exactly was it says: It makes it easy to use WebDAV in your own JAX-RS based application. It is not a server nor its own framework, it is just an extension to JAX-RS. So Jackrabbit and Milton are no competitors to "WebDAV Support for JAX-RS". The Litmus Test cannot be run against "WebDAV Support for JAX-RS" since you need to build a running product first. "WebDAV Support for JAX-RS" has not own runtime, it builds ontop of the JAX-RS runtime that you choose on your own. Be free to try it and post the results. There currently is not web site because we concentrate on the code first. But you are very welcome if you like to volunteer and provide an improved web site. :-) There currently is no documentation besides the javadocs (to be found in the downloads) because "WebDAV Support for JAX-RS" should be pretty obvious to use for anybody that is used to JAX-RS, as it is just an extension to JAX-RS (actually I don't know what should be inside of the docs? Can you make an example what is missing that is not already explained in JSR 311?) and there is a sample application coming soon that shows how simple its usage is (it is missing in the downloads area currently due to a Maven 2 bug... -- following soon / can be found in SVN already)

@xix: Well, AFAIK at the moment there are three implementations of WebDAV in Java: Jackrabbit, Milton, WebDAV Support for JAX-RS. I'm one of the firsts that scream about effort dispersion, but three implementations don't seem to me an excess. Also, I've had a quick look at JackRabbit when I needed WebDAV, but the protocol support seems to be too buried in the server - at least, there's no clear documentation about how to use it if you only need the protocol API. On the contrary, Milton has got a very clear "getting started" about that and you can use it in minutes. WebDAV Support for JAX-RS (*) seems to be in the same easy-to-use field, we will know when there is a minimum of documentation. Also, the REST APIs are pretty nice IMO and I'm already using them, so a WebDAV support in the same style is welcome. (*) May I suggest that you pick a shorter nickname or acronym? :-)

Do you ever heard of Apache project Jackrabbit? It's the reference implementation for the Java Content Repository standard (JCR). It comes with WebDAV support, too. IMHO, it would be wise to think about promoting one and only one Java WebDAV server framework and client library, wouldn't it? The fragmented support of WebDAV in Java has lead to an uncomfortable situation that WebDAV support in Java is still limited and rarely used.

Hmm... AFAIK Litmus can be used to test protocol compliance too, which is one of the thing people are most interested when speaking of WebDAV. For instance, Milton (http://milton.ettrema.com) - an API for server-side WebDAV support - claims to be tested with Litmus (in the sense that they run Litmus against it and report which tests pass and which fail). See the bottom at the page http://milton.ettrema.com/compat/index.html I believe they have created a mock server to test the API, but this is normal when you run integration tests. Indeed this is very important, as the WebDAV protocol itself has quite a few quirks with client implementations (e.g. embedded clients in operating systems). At the moment I've evaluated Milton for my needs, but I'm willing to try "WebDAV support for JAX-RS"; while the API design and its simplicity are important as usual when one choose an API, interoperability with clients is the most important thing.

One can only hope that if you have any plans for anyone other than you to use this, that you'd provide at least some form of documentation, an autogenerated maven page is not exactly confidence building. I'm actually very interested in this, but I'd be shooting myself in the face by even vaguely considering it at this point, considering the astonishing lack of what can be sanely called a project website.

"WebDAV Support for JAX-RS" (like JAX-RS itself) is not a server product which you can run. It is just a framework, providing building bricks for those wanting to write a WebDAV server product. The Litmus Test (http://www.webdav.org/neon/litmus/) is a test suite testing the compliance of a server product with the WebDAV specification. So it cannot test frameworks, but only complete server products. So the result of The Litmus Test depends more on correctness of the server product, less on the correctness of "WebDAV Support for JAX-RS", since you cannot run The Litmus Test on the library itself, without a server product behind it that does something with the incoming WebDAV requests.

Hi Markus. How does WebDav for JAX-RS pass the Litmus test? Thanks.