Java Jackrabbit WebDAV如何生成eTag头?
我有一个在Tomcat中运行的Jackrabbit WebDAV服务器,我想知道如何生成ETag头值。是哪一类制作的 如何使用Java根据Jackrabbit存储库中的初始文件和it路径生成它 预期流量: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属性(),否则将尝试根据时间戳和文件长度生成一些内容。稍后
我相信服务器将使用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上的条件不完全受支持(但我支持它)。