Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackrabbit WebDAV如何生成eTag头?_Java_Http_Webdav_Jackrabbit - Fatal编程技术网

Java Jackrabbit WebDAV如何生成eTag头?

Java Jackrabbit WebDAV如何生成eTag头?,java,http,webdav,jackrabbit,Java,Http,Webdav,Jackrabbit,我有一个在Tomcat中运行的Jackrabbit WebDAV服务器,我想知道如何生成ETag头值。是哪一类制作的 如何使用Java根据Jackrabbit存储库中的初始文件和it路径生成它 预期流量: 初始文件上载到服务器 如果客户端正在上载新文件:计算ETag,并将其与服务器上相应的文件ETag进行比较 如果值相同-不上载文件,则向客户端发送响应。If values defer-替换服务器上的文件 我相信服务器将使用jcr:etag属性(),否则将尝试根据时间戳和文件长度生成一些内容。稍后

我有一个在Tomcat中运行的Jackrabbit WebDAV服务器,我想知道如何生成ETag头值。是哪一类制作的

如何使用Java根据Jackrabbit存储库中的初始文件和it路径生成它

预期流量:

  • 初始文件上载到服务器
  • 如果客户端正在上载新文件:计算ETag,并将其与服务器上相应的文件ETag进行比较
  • 如果值相同-不上载文件,则向客户端发送响应。If values defer-替换服务器上的文件

  • 我相信服务器将使用jcr:etag属性(),否则将尝试根据时间戳和文件长度生成一些内容。

    稍后在Jackrabbit源代码中,我发现:

    if (length > IOUtil.UNDEFINED_LENGTH && modTime > IOUtil.UNDEFINED_TIME) {
        String etag = "\"" + length + "-" + modTime + "\"";
        context.setETag(etag);
    }
    
    其中:
    modTime=Callendar#getTimeInMillis()


    因此etag是在下一个模式上生成的:大小字节-修改日期转换为长。

    我遵循了链接,但它是针对JCR的。我的目的是以与Jackrabbit相同的方式生成此类ETag。有什么想法吗?Jackrabbit是JCR规范的参考实现。所以设置JCR:etag属性就可以了。FWIW,我不完全明白为什么要以相同的方式生成etag?也许你可以在你的问题中详细说明一下?我想用ETag作为jackrabbit WebDAV服务器上文件的指纹。不保存上传文件,而是为其计算ETag,并检查服务器上的文件是否具有相同的.Aha。这是行不通的,因为在Jackrabbit中etag不是基于内容的(还请注意,在Jackrabbit WebDAV中,etag上的条件不完全受支持(但我支持它)。