Hi,
I'm about to set up a webdav server on a stock Tomcat 8.0.9 (RHEL 6.5 x86_64). To do so, I installed a dummy application with the web.xml attached to this message, altered the conf/tomcat-users.xml and started the tomcat server.
Now when uploading a file it doesn't show up immediately. Which is quite confusing for an application that does a PROPFIND right after PUTting the file, which results in a 404. Or, even worse, in a 500 when trying to MOVE or COPY the file.
Example: (1)
dav:/webdav/> ls Listing collection `/webdav/': collection is empty. dav:/webdav/> put testfile.bin Uploading testfile.bin to `/webdav/testfile.bin': Progress: [=============================>] 100,0% of 102400 bytes succeeded. dav:/webdav/> propget testfile.bin Fetching properties for `testfile.bin': failed: 404 Not Found
[now I'm waiting for a couple of seconds]
dav:/webdav/> propget testfile.bin Fetching properties for `testfile.bin': DAV: creationdate = 2014-07-01T16:29:35Z DAV: displayname = testfile.bin DAV: getlastmodified = Tue, 01 Jul 2014 16:29:35 GMT DAV: getcontentlength = 102400 DAV: getcontenttype = application/octet-stream DAV: getetag = W/"102400-1404232175000" DAV: resourcetype = DAV: source = DAV: supportedlock = <DAV:lockentry><DAV:lockscope><DAV:exclusive></DAV:exclusive></DAV:lockscope><DAV:locktype><DAV:write></DAV:write></DAV:locktype></DAV:lockentry><DAV:lockentry><DAV:lockscope><DAV:shared></DAV:shared></DAV:lockscope><DAV:locktype><DAV:write></DAV:write></DAV:locktype></DAV:lockentry>
(2)
dav:/webdav/> rm testfile.bin Deleting `testfile.bin': succeeded. dav:/webdav/> ls Listing collection `/webdav/': collection is empty. dav:/webdav/> put testfile.bin testfile.bin.tmp Uploading testfile.bin to `/webdav/testfile.bin.tmp': Progress: [=============================>] 100,0% of 102400 bytes succeeded. dav:/webdav/> move testfile.bin.tmp testfile.bin Moving `/webdav/testfile.bin.tmp' to `/webdav/testfile.bin': failed: 500 Internal Server Error
[again, waiting for a couple of seconds]
dav:/webdav/> move testfile.bin.tmp testfile.bin Moving `/webdav/testfile.bin.tmp' to `/webdav/testfile.bin': succeeded.
Why is tomcat behaving like this and how do I configure it to allow immediate file operations after upload?
AFAICT this is not a client issue. I've tested with cadaver, the Gnome and KDE file browsers and owncloud.
Kind regards, Philippe
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.5"> <display-name>webdav</display-name> <description>webdav access</description> <servlet> <servlet-name>webdav</servlet-name> <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <!-- allow access to WEB-INF and META-INF --> <!-- <init-param> <param-name>allowSpecialPaths</param-name> <param-value>true</param-value> </init-param> --> </servlet> <!-- change to /foo/* to enable webdav only in /foo --> <servlet-mapping> <servlet-name>webdav</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>WebDAV</web-resource-name> <url-pattern>/*</url-pattern> <http-method>CANCELUPLOAD</http-method> <http-method>CHECKIN</http-method> <http-method>CHECKOUT</http-method> <http-method>COPY</http-method> <http-method>DELETE</http-method> <http-method>GET</http-method> <http-method>GETLIB</http-method> <http-method>HEAD</http-method> <http-method>LOCK</http-method> <http-method>MKCOL</http-method> <http-method>MOVE</http-method> <http-method>PROPFIND</http-method> <http-method>PROPPATCH</http-method> <http-method>PUT</http-method> <http-method>REPORT</http-method> <http-method>UNCHECKOUT</http-method> <http-method>UNLOCK</http-method> <http-method>UPDATE</http-method> <http-method>VERSION-CONTROL</http-method> </web-resource-collection> <!-- force https --> <!-- <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> --> <auth-constraint> <role-name>*</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <!-- <auth-method>DIGEST</auth-method> --> <realm-name>WebDAV</realm-name> </login-config> <security-role> <description>WebDAV User</description> <role-name>webdav</role-name> </security-role> <distributable /> </web-app>
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org