Spring Boot WebDAV Server Example with File System Back-end, Java

This sample provides a WebDAV server running on the Spring Boot framework. The WebDAV requests are processed in a dedicated context, while the rest of the website processes regular HTTP requests, serving web pages. Documents are being published from the file system with locks and custom attributed being stored in Alternating Data Streams (in case of NTFS) or in Extended Attributes (in case of Linux and macOS). 

Requirements

  • Java 1.8.
  • NTFS, Ext4, Ext3 or any other file system which supports extended file attributes. You can find a complete list of file systems that support extended attributes here. To enable extended file attributes on Linux change fstab to look like: 
    /dev/sda1  /               ext4    errors=remount-ro,user_xattr   0       1

Running the sample

  1. Set license. Download your license file here. To set the license, edit the 'webdav.license' section in \springboot\src\main\resources\application.properties and specify the path to the license.lic file.
    webdav.license=C:\License.lic
    The IT Hit Java WebDAV Server Library is fully functional and does not have any limitations. However, the trial period is limited to 1 month. After the trial period expires the Java WebDAV Server will stop working.
  2. Configure the storage folder. By default, this sample publishes documents from the springboot\src\main\resources\Storage folder. For the sake of configuration simplicity, documents are extracted from project resources during the first run. You can publish documents from any other folder specifying a path in the 'webdav.rootFolder' section in application.properties:
    webdav.rootFolder=C:\Storage
  3. Configure the application server. Here we will configure WebDAV server to run on the website root (http://server.com/DAV/). Setting is located in the 'webdav.rootContext' section in the \springboot\src\main\resources\application.properties.
    webdav.rootContext=/DAV/
    Note: While you can configure WebDAV server to run on site non-root (for instance on http://server.com/DAV/) some WebDAV clients (such as some old versions or Mini-redirector, Microsoft Web Folders and MS Office 2007 and earlier) will fail to connect to non-root server. They submit configuration requests to server root and if they do not get the response they will not be able to connect. See also Making Microsoft Office to Work with WebDAV Server and Opening Microsoft Office Documents and Other Types of Files for Editing From a Web Page.
    This springboot sample supports those configuration requests and works properly on non-root context.
  4. Running the springboot sample. To start the sample, change directory to springboot and execute
    mvnw spring-boot:run

    If everything was set up properly you should see a sample page on the http://server.com/DAV/with a list of sample files and folders. Now connect to the server with any WebDAV client.

    If anything goes wrong please consult log usually located at springboot/log/engine.log.

The Project Classes

On the diagram below you can see the classes in the WebDAV SpringBoot sample:

Class diagram of the sample Java WebDAV Server running on Spring Boot

To adapt the sample to your needs, you will modify these classes to read and write data from and into your storage. You can find more about this in Creating a Class 1 WebDAV Server and Creating Class 2 WebDAV Server article as well as in the class reference documentation.

 

See Also:

 

Next Article:

WebDAV Server Example with Oracle Back-end, Java