【问题标题】:Websphere Liberty: URL to a file in a WAR doesn't have correct last-modified timestampWebsphere Liberty:WAR 中文件的 URL 没有正确的最后修改时间戳
【发布时间】:2017-05-10 20:04:07
【问题描述】:

我正在获取一个指向在 Liberty 16.0.0.4 中运行的(解压缩的)WAR 中的 JAR 中的文件的 URL。代码大致是:

URL url = servletContext.getResource(somePath);
URLConnection connection = url.openConnection();
long lastModified = connection.getLastModified();

网址的格式

"wsjar:file:/{path_to_WAR}/My.war/WEB-INF/lib/someLIB.jar!/META-INF/resources/foo/bar.txt"

我正在寻找文件的时间戳,因为它用于生成 etag、缓存控制等。相反,我得到了 someLIB.jar 的时间戳。 jar 的时间戳是无意义的,并且在从 eclipse 发布期间和我们的自动构建期间都在不断变化。

这不是错误吗?有什么解决办法吗?

【问题讨论】:

    标签: websphere websphere-liberty


    【解决方案1】:

    wsjar 协议尝试与jar 协议具有相同的用户可见行为。唯一的预期区别是允许更好地控制缓存和 Windows 文件共享锁。 jar 协议返回 JAR 的时间戳,而不是条目,所以 wsjar 协议也是如此,所以这不是错误。理论上,您可以尝试提交 RFE 以添加针对非标准行为的选项,但目前尚不清楚它是否会真正实施。

    作为一种解决方法,您可以调整构建以在 JAR 中存储一个包含所有其他文件时间戳的附加文件,或者您可以更改 ETag 以使用弱验证而不是强验证。 (其他人可能会建议自己解析wsjar URL并打开JAR,但依赖其他JAR的语法相当脆弱。)

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2021-04-03
      • 2015-09-09
      • 2016-01-09
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2019-02-24
      相关资源
      最近更新 更多