WebDAV Server Library for Java Release History


April 10, 2024
  • Amazon S3 sample springbootS3storage now runs on Jakarta.


February 13, 2024
  • Lock timeout calculated incorrectly on file open after the server reboot in springboots3storage sample. The file stayed locked forever. Now this bug is fixed.


January 19, 2024
  • Sync ID is now an int value instead of URI in collectionsync WebDAV server sample.
  • Websocket spring implementation moved to integration lib.
  • Extended attributes implementation moved to integration lib.

v7.0.10120 Beta

December 7, 2023
  • Samples are now independent of Java EE version. Samples can now run on both javax & jakarta without changes.
  • Web sockets classes, servlet classes and servlet config classes are now moved to integration libs.
  • servlet-integration renamed to javax-integration.


September 6, 2023
  • Class reference documentation did not include code samples. Now code samples are included.


August 23, 2023
  • Collectionsync sample now runs on Jakarta.
  • The content-length of a file is now reported as zero while file is being uploaded in WebDAV server samples with file system back-end. Otherwise client application may try to download a file while upload is in progress.

v6.3.9510 Beta

August 2, 2023
  • Support for the new JakartaEE API introduced in the new jarakrta-integration lib.
  • Introduced a new filesystem sample utilizing Java 17 and jakartaEE API.
  • Introduced a new springboot3fssample utilizing Java 17, Spring Boot 3 and JakarataEE API.
  • WebDAV java lib webdav-server is now built with Java 7.

v6.2.9090 Beta

June 1, 2023
  • In collectionsync sample if GetChangesAsync() received 0 in limit parameter, the sync-token were not returned. Now sync-token is properly returns if 0 is passed in limit parameter. No changes are returned in this case.

v6.2.9080 Beta

May 19, 2023
  • Bind interface implemented. Now server can return resource-id and parent-resource-id properties.
  • After calling Folder.CreateFileAsync() method, the Engine reads newly created file ID by calling Bind.id property. If Bind is implemented on file, the ID is returned in resource-id property.
  • Folder.CreateFolderAsync() method now returns Folder interface. If the folder implements Bind, the ID of the newly created folder is returned to the client.
  • collectionsync sample now supports getting item by ID.
  • Sample implementation of SynchronizationCollection.GetChangesAsync() method performance improved in collectionsync sample.
  • X-Engine header is now added only in debug mode and in case of a trial license. The header is not added for non-trial license in the release mode.

v6.1.7907 Beta

March 14, 2023
  • A new WebDAV server sample with collections synchronization support and file system back-end is provided. The new sample can be used together with a new WebDAV Drive for macOS sample provided with IT Hit User File System.
  • JNA upgraded to v5.13.0
  • Tika upgraded to v1.28.5

v6.0.7539 Beta

November 23, 2022
  • Collection Synchronization protocol is now supported. All changes can now be requested by sending last sync ID to the server. SynchronizationCollection interface with GetChanges() method is provided.
  • Now the sample servers implementation filters web socket events by client instance ID. Events are not sent back to the WebDAV client that initiated the update/move/delete/lock/unlock operation. The client instance ID is provided by the IT Hit User File System WebDAV Drive sample in InstanceID header when connecting web sockets and sending requests to the server.
  • Now the sample web sockets implementation sends events only for the root folder in case of a move and delete. Events for subfolders and files under the root folder are not being sent.
  • Exception when running filesystem, springbootfs, and kotlinfs samples on Java 9+: java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;] with root cause java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer. This bug is now fixed.


September 13, 2022
  • Dependencies upgraded to apache tika 1.28.4, spring-boot 2.3.11, jdom2
  • Kotlin sample upgraded to Kotlin 1.7.10.
  • All samples refactored to apply static analyzer best practices.
  • WebSockets in samples did not connect if session cookie is not set. This bug is now fixed.
  • Json data format in WebSockets in samples is now CamelCase. It is now identical to Json WebSockets in .NET WebDAV Server samples.


June 30, 2022
  • Non-root context did not work with a non-default file system storage configuration path in file system samples. This bug is now fixed.


June 15, 2022
  • If the If-Match header sent by the WebDAV client contains * and a file has a eTag, the 412 Precondition Failed error is always returned. This bug is now fixed.


May 21, 2022
  • The WebDAV server samples incorrectly report lock timeout in PROPFIND response for locked items. Now the lock timeout is properly calculated. 
  • "Pause upload/Resume upload" button on a default page did not sync with individual files upload status. Now the button properly changes status according to files upload status. 
  • Dependencies updated in samples: Google Gson updated to version 2.8.9.


February 22, 2022
  • Maven whapper (mvnw) error 'Exception calling "DownloadFile" with "2" argument(s): "An exception occurred during a WebClient request."' if maven is not installed. This bug is now fixed.
  • If WebSockets disconnect in JavaScript code on a default handler page, the WebSockets are reconnected automatically.
  • Project dependencies updated.


October 15, 2021
  • Ajax multiple files download added on a default handler page.
  • Web sockets implementation refactored in WebDAV Server samples. Now a separate event is being sent by the server for each operation: created, updated, deleted, moved, locked, and unlocked.
  • ThreadLocals are created and are not released. Now ThreadLocal is properly released in DavContext.


October 5, 2021
  • Request and response header values can now be masked in the log. The Engine.getMaskRequestHeaders() and Engine.getMaskResponseHeaders() methods are provided to specify list of headers to be masked. The Authorization request header and WWW-Authenticate response header values are now masked by default.
  • Samples code refactored to improve code quality and better compliance with Java language standards.


August 20, 2021
  • Default handler page JavaScript code in WebDAV server samples factored.
  • commons-io dependency updated to v2.7 in Spring Boot-based samples.


July 10, 2021
  • ScriptEngine.eval() call removed from the Engine. License validation refactored.


June 8, 2021
  • Spring Boot WebDAV Server sample with Amazon S3 backend now supports all file system operations and passes all integration tests.
  • WebDAV did not work in Spring Boot samples in the case of context root configuration. Now, this bug is fixed.


April 28, 2021
  • A new Spring Boot WebDAV Server sample with Amazon S3 backend Beta is provided. The sample keeps all data in the Amazon S3 bucket with locks and custom attributed being stored in Amazon S3 Metadata. 


March 10, 2021
  • 'java: package com.sun.nio.file does not exist' exception is thrown if WebDAV Server samples are running on macOS using Java 9 and later versions and started from IntellijIdea in Debug/Run configuration. Now, this bug is fixed.


March 3, 2021
  • Spring Boot WebDAV server sample with file system back-end now supports MS-OFBA authentication. Users are authenticated against Azure Active Directory.
  • Default GET handler page JavaScript and CSS is updated in WebDAV server samples.


January 19, 2021
  • Indexing and search did not properly close database connection in samples with Oracle back-end. The sample server run-out of open connections. This bug is now fixed.


November 24, 2020
  • DavContext class is provided, implementing thread-safe WebDAV context. The request and response can now be accessed via DavContext.currentRequest() and DavContext.currentResponse() static methods anywhere inside your WebDAV server interfaces implementation. 
  • The following methods are now obsolete and are removed from the Engine: WebDavEngine.setServletRequest(), WebDavEngine.getRequest(), WebDavEngine.getResponse(), WebDavEngine.setResponse().
  • Samples are refactored to read lock-tokens using the DavContext.currentRequest().getClientLockTokens() call, instead of remove the getEngine().getRequest().getClientLockTokens() call.
  • DavRequest and DavResponse classes are moved from com.ithit.webdav.server.http namespace to com.ithit.webdav.server namespace.


November 16, 2020
  • Concurrency issues may occur in WebDAV Server SpringBoot samples. The single request instance may be shared between several threads. A new Engine instance is now created per request in SpringBoot samples to avoid concurrency issues.


June 25, 2020
  • Unused extended attributes classes are removed from the Spring Boot sample with Oracle back-end.


May 27, 2020
  • If specific properties content were specified in the PROPFIND request, incorrect XML property content was generated. This bug is now fixed.
  • Protocol application download links did not work in WebDAV server samples. This bug is now fixed.
  • Paging is implemented in DeltaV sample.


May 26, 2020
  • Property.getXmlValueRaw() and Property.setXmlValueRaw() incorrectly get and set property value. Now this bug is fixed.
  • WebDAV server samples now store raw, unencoded custom property values. Previously encoded property values were stored.
  • Protocol application and web browser extension callback dialog refactored in WebDAV server samples.
  • Cut, Copy, Paste, and Refresh commands added on a toolbar on MyCustomGetHandlerPage.html in WebDAV server samples.


May 19, 2020
  • Property.getXmlValueRaw() and Property.getXmlValueRaw() methods incorrectly get and update property value. Property outer XML was returned and set instead of property value by these methods. Now, the property raw value is get and set. Property.create() and Propery.createRaw() static methods are provided for properties creation.
  • webdav.rootFolder property from application.properties file in Spring Boot File System WebDAV Server sample is now normalized after reading.


May 6, 2020
  • WebDAV property now supports XML content. Property class now provides a new constructor and getXmlValueRaw()/setXmlValueRaw() methods to set raw XML to be written inside a <prop> tag.


March 4, 2020
  • Sample WebDAV server for the Spring Boot framework with Oracle back-end is provided. The WebDAV requests are processed in a dedicated context, while the rest of the website processes regular HTTP requests, serving web pages. Documents, folders structure, locks and custom properties are stored in the Oracle database.


February 19, 2020
  • Added websocket support to the Spring Boot sample. Documents list is now updated in case of any changes on the server.
  • Indexing and search in the Spring Boot sample implemented.
  • OPTIONS and PROPFIND requests are now properly processed on the site root in the Spring Boot sample.


February 6, 2020
  • The default handler page in sample servers is refactored. The user interface and graphics are updated.
  • Sorting in search results redirected back to folder content listing. Now sorting in search results is disabled.
  • License validation failed for subscription licenses released over a year ago. Now, this bug is fixed.
  • The Engine logging refactored and structure improved.
  • The Engine version did not log. Now Engine version is logged into web server log file.


January 31, 2020
  • Spring Boot WebDAV server sample code refactored. New configuration settings added to application.properties.
  • Spring Boot WebDAV sample now publishes WebDAV on /DAV/ context by default (was on /webdav/ context). 'webdav.rootContext' context configuration setting is added. 
  • Spring Boot WebDAV sample now reads a license from an external file configured in webdav.license setting.
  • Spring Boot WebDAV sample, the path to storage folder can now be configured in webdav.rootFolder setting.


January 29, 2020
  • Sample WebDAV server for the Spring Boot framework is provided. The WebDAV requests are processed in a dedicated context, while the rest of the website processes regular HTTP requests, serving web pages.


May 29, 2019
  • File modification date change during lock and unlock in file system sample causing file save failure during first save in Microsoft Office, if Microsoft Office has Protected Mode enabled. The following message was displayed "File updated. <File> has been changed by another author.". Now in file system sample the file modification date is not changed during lock and unlock.


March 2, 2019
  • Incorrect children order in propstat and activelock XML elements in server response. This bug is now fixed.


February 9, 2019
  • Oracle sample now supports paging and sorting.
  • Upload in sample WebDAV servers places file in WebDAV root instead of a current folder. Incorrect target folder specified in JavaScript on a default handler page. Now upload is performed into the current folder.
  • Web browser back button does not work correctly in Firefox and Edge on a default handler page supplied with samples. Now this bug is fixed.
  • Default handler page supplied with samples refactored to display paging only if server supports paging and hide if paging is not spported.


February 6, 2019
  • WebDAV server sample with file system back-end failed to run on Linux. The ServerException was thrown “Reading attribute ‘Locks’ from file ‘<path>’ failed”. This bug is now fixed.
  • File creation failed in WebDAV server sample with file system back-end if server is running on Linux. The File.newByteChannel() function does not support NOSHARE_DELETE option. Now this option is omitted in case the server is running on Linux.
  • Depth header did not process correctly on files. Response contained malformed XML in case of Depth: 1 was specified. Now Depth header is ignored on files.


February 4, 2019
  • File creation failed if server is running on Mac OS. The File.newByteChannel() function does not support NOSHARE_DELETE option. Now this option is omitted in case the server is running on Mac OS.
  • Luciene and Ticka libraries updated to reference the latest version to avoid potential security vulnerability.
  • All libraries referenced in sample servers are updated to the latest version.



November 7, 2018
  • Samples now reference latest Apache Lucene and Tica libraries.
  • Indexing file size limit set to 1Mb in File System sample.
  • pom.xml in Kotlin File System sample fixed.
  • Default handler page HTML and JavaScript updated to support paging and sorting in file system sample.

v4.1.2703 Beta 2

October 25, 2018
  • File System sample in Kotlin is provided.
  • Reference to tika-core library is updated to the latest version.

v4.0.2590 Beta 1

October 7, 2018
  • Paging and sorting are now supported when listing children. The Folder.getChildren() method now provides parameters to pass offset, page size and results sorting as well as to return total number of items in return object. Default handler page is refactored to support paging and sorting and use new IT Hit WebDAV Ajax Library v7.0 Beta paging functions such Folder.GetPageAsync().
  • Paging is now supported in search results. The Search.search() method now provides parameters to pass offset, page size. Default handler page is refactored to support paging in search results and use new IT Hit WebDAV Ajax Library v7.0 Beta paging functions.
  • "paging" token is added to DAV header.
  • Default handler page is refactored to support upload auto-restore provided in IT Hit WebDAV Ajax Library v7.0 Beta. The upload section can now display error description and status for failed uploads.
  • Default handler page now prevents tab closing in case any uploads are present in the list.
  • Web browser back button does not work when navigating through folders hierarchy on a default handler page. This bug is now fixed.


June 21, 2018
  • Microsoft Office Mobile on Android is now supported.
  • Microsoft Office Mobile on Windows 10 is now supported.
  • When a file is copied or moved, the destination file contained source file locks. Now this bug is fixed. All sample servers copy and move implementation code is updated to remove source file locks from destination file after copying.


June 20, 2018
  • The com.ithit.webdav.integration.servlet Java sources were missing from the source codes package. Now sources of this package are included in a package.


April 25, 2018
  • Sample WebDAV servers now use Bootstrap 4 on a default page.
  • Sample WebDAV servers static files (files stored outside of WebDAV storage, used for web UI) processing refactored. JavaScript files, images, CSS files and other static files are now served more efficiently, if-headers, modification date and other HTTP headers are processed properly, reducing server traffic.
  • License check may throw ServerException "The license is obsolete" exception with valid licenses. This bug is now fixed.


February 20, 2018
  • Dependency from org.jboss.vfs removed.
  • Mime-types list updated. Now it contains all most recent list of all registered mime-types.
  • NullPointerException in LicenseValidator is thrown if vfszip protocol is used (for example on JBoss 5.x).
  • Content-range, Timeout, Location and If header added to Access-Control-Allow-Headers to support CORS.


February 8, 2018
  • Java 9 is now supported by the Engine. Pre-Java 9 dependencies are removed from project.
  • Indexing code refactored in File.write() method implementation in file system sample.
  • After a file is deleted folder content listing may fail. When upload canceled folder content refresh triggered via web sockets caused folder content to appear broken. Now this bug is fixed.


December 25, 2017
  • The getClientLockTokens() method is moved from the Engine class to the DavRequest class. The Engine.getClientLockTokens(DavRequest) method is marked as deprecated.
  • Engine.getVersion() method is now static.
  • "afb" folder is renamed to "wwwroot" in samples.
  • Class reference fixed and updated.


October 30, 2017
  • IT Hit WebDAV Ajax Library did not download from NPM. Now the library automatically downloaded from NPM.


October 27, 2017
  • WebDAV Ajax Library files are now referenced from local server from '/wwwroot/node_modules/webdav.client/' folder (previously were referenced from ajaxbrowser.com).
  • Microsoft Office applications submit outdated ETag after machine wakes up from sleep mode, causing file update failure. Now PUT request returns an updated ETag in the response, so the client-side ETag always properly updated.
  • GET and HEAD requests returned ETag without quotes. Now this bug is fixed.
  • If-Math header parsing refactored.
  • License-check code updated. 

v3.0.2008 Beta

October 25, 2017
  • A new sample WebDAV server Class 2 application that runs on Android is provided. A user can open documents in a web browser from any machine on a network from Android application storage, edit and save back to server. A user can also browse and manage files in Android media folder.

v3.0.1143 Beta

October 19, 2017
  • Negative value was returned for files over 2Gb in Content-Length header for GET and HEAD requests. Now this bug is fixed.

v3.0.1012 Beta

October 9, 2017
  • Engine is now independent of the servlet requests and responses. DavRequest and DavResponse interfaces are provided. Engine.service() method now accepts DavRequest and DavResponse interfaces as parameters.
  • Default implementation of DavRequest and DavResponse interfaces are provided in HttpServletDavRequest and HttpServletDavResponse classes and included into servlet-integration-<version>.jar.


September 6, 2017
  • Yearly and monthly subscriptions are now supported.


August 14, 2017
  • WebDAV server sample with file system back-end now runs on Mac OS X. Extended attributes are now being managed via Java Native Access (JNA) library.


July 5, 2017
  • Web Sockets in all samples Implemented. Now when a file or folder is created, updated, deleted, copied or moved a notification is sent to client and web UI is updated.
  • Artifacts are published to Maven Central Repository.
  • All samples are now published to GitHub.
  • License validation failed on WebSphere on Linux. Now this bug is fixed.


April 21, 2017
  • HEAD requests on folders are now processed. WebDAV clients that require HEAD request on folders are now supported.
  • NullPointerException on WebSphere and WebLogic if ExpirationDate is specified in license file. This bug is now fixed.


March 13, 2017
  • NullPointerException on JBoss if ExpirationDate is specified in license file. Now this bug is fixed.


February 20, 2017
  • getetag property was missing quotes around e-tag in PROPFIND requests. Now this bug is fixed.
  • NVL function removed from SQL sample, it is not required as the field is non-null.
  • Saving file content refactored in SQL sample.


February 8, 2017
  • ETag is now supported. GetEtag() method is provided in File interface and getetag is served in PROPFIND requests and in response headers.
  • Microsoft Office merging is now supported. If a document is opened by 2 users simultaneously Microsoft Office will offer merging when saving a second user copy.
  • Download pause/resume processing improved. If file is paused during download and modified on server the download now starts from the beginning.
  • Source codes packaging improved in source codes version.


November 29, 2016
  • License validation may fail in some cases for non-trial licenses. NullPointerException is thrown. Now this bug is fixed.


October 18, 2016
  • A custom GET method handler in samples was created during each request, because it was created in HttpServlet.service() method. This caused stack-overflow exception on a server sample running for a long period of time. Now the custom GET method handler creation moved to HttpServlet.init() method.


October 3, 2016
  • Lock-token header parsing did not work properly. Microsoft Office 2016/2011 for Mac failed to save documents opened from server. This bug is now fixed.
  • Lock refresh Java unit test added to source codes version.


September 28, 2016
  • Search implementation in samples now returns snippet (piece of text around search phrase in file content). Ajax is refactored on MyCustomHandlerPage.html page to request snippet from server using custom WebDAV property and display snippet in search results.
  • File System Sample refactored. Now JSON is used to serialize/deserialize locks and custom properties in file system attributes.
  • Properties requested by WebDAV client app are now passed into Folder.search() and Folder.getChildren() functions. This can be used as a hint about what properties will be requested in HierarchyItem.getProperties call.
  • WebLogic descriptors provided.
  • Code examples added to Javadocs.
  • Open Ajax File Browser button did not work in case of non-root hosting. Now this bug is fixed.

v2.0.307 Beta

September 19, 2016
  • The custom handler page updated. Now this page uses Twitter Bootstrap. Navigation in hierarchy is now performed without page reloading. Breadcrumb added. The page is properly resized and displayed on all screen sizes.
  • Search support with drop-down hint is added to the custom handler page in all samples using WebDAV Ajax Library Folder.SearchAsync() function. Search support is detected using Folder.GetSupportedFeaturesAsync() ajax call.
  • Search interface was derived from HierarchyItem. Now Search is derived from Folder interface.
  • Fixed issue with folder re-indexing in samples after folder being moved.
  • Content-Type header added for custom handler page in samples.
  • Fixed real path issue for WebSphere.
  • License validation fixed with wrong month assignment. SupportExpiration field is now correctly validated.
  • Upload subscription bug fixed for JBoss and GlassFish when they send response as chunked.
  • Added web descriptors for deploying to JBoss and GlassFish to root context.
  • Javadocs refactored and fixed.

v2.0.250 Beta

September 8, 2016
  • When running samples under Netbeans and Tomcat there was error while deploying application saying that context.xml is broken. This bug is fixed.
  • Fixed License validation in engine.

v2.0.243 Beta

September 6, 2016
  • Implemented DASL search support in server engine. DASL search by file name and content is implemented in server samples.
  • Implemented Quota support in server engine. Quota is implemented in server samples.
  • Javadoc are provided for all classes and methods in server samples.
  • Server samples are populated with test files and folders using Maven.
  • Added embedded Tomcat to run server samples.
  • File System sample on Linux throw exception if file system extended attributes are not supported. Now appropriate extended attributes detection and description added.

v2.0.205 Beta

August 17, 2016
  • Sample with file system storage provided. Locks data is stored in alternative file streams.
  • Tested with Ajax File Browser and WebDAV Ajax Library. Samples tested with WebDAV Ajax Library Integration Tests.
  • Default page refactored. In addition to files list default page now provides more information to start forking with WebDAV server. You can run integration tests, open Ajax File Browser and open OS file manager.
  • Both samples and source codes version now use Apache Maven.
  • Server XML responses were sent as chunked, regardless of CalculateContentLength option. Now this bug is fixed.
  • Resumable upload failed after pausing. Now this bug is fixed.
  • Trial license verification failed. Now this bug is fixed.


August 8, 2011
  • 'Overwrite: T' header was parsed incorrectly. Now this bug is fixed.


March 23, 2011
  • Now server supports uploads with unknown content length. The Content-Range header can be passed in 123-456/* format.


February 28, 2011
  • Cross-origin requests for copy and move failed. Now Overwrite and Destination headers are added to Access-Control-Allow-Headers to support copy and move. 
  • OPTIONS request in samples provided with the SDK now work without authentication to support cross-origin requests in Firefox.


January 31, 2011
  • If you throw ServerException in your code the error message text was not returned to the client. Now the error message is returned in error\responsedescription element, in concordance with RFC 4918.


July 27, 2010
  • Engine now attaches headers that enable cross-domain requests from AJAX. 
  • Default HTTP port 80 and HTTPS port 443 are removed from URLs returned by the server.


May 19, 2010
  •  The server library now supports DeltaV versioning. DeltaV sample provided.


March 30, 2010
  •  Fixed defect with MIME types.


February 8, 2010
  •  Sun GlassFish support added. Oracle sample tested with Sun GlassFish.

v1.0.0.24 Beta 1

March 12, 2009
  •  Web Folders on Windows Vista sometimes submits incorrect Lock-Token header. Now this problem is fixed.

v1.0.0.23 Beta 1

March 11, 2009
  • RFC 4918 Class 3 support added.
  • Content-Type header now returns charset.

v1.0.0.20 Beta 1

February 28, 2009
  • Multipart POST-upload support added.
  • Upload progress interfaces added: UploadProgress and ResumableUpload. Resumable upload and upload progress implemented in the sample server.
  • Encoding of special characters fixed.
  • Query string is now truncated in sample before parsing URL.

v1.0.0.0 Beta 1

February 11, 2009
  • Class 2 WebDAV server library and tomcat+oracle sample provided.