gpt4 book ai didi

java - Ant signjar 任务时间戳太长

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:08 25 4
gpt4 key购买 nike

我正在使用 Hudson 构建一个项目。我有几个 jar 文件,我想使用 Ant SignJar 任务使用时间戳进行签名。当没有时间戳时,它就像一个魅力 - 一个文件大约需要 2-3 秒。当我将“tsaurl”属性添加到 SignJar 任务时出现问题。然后一个文件的时间戳需要几分钟。我尝试使用不同的时间戳服务器,但没有帮助。有谁知道为什么要花这么多时间?首先,有什么办法可以解决这个问题吗?

最佳答案

我遇到的主要问题是 jarsign 花费的时间太长(至少在 Linux 上)是内核熵池耗尽。此时,进程阻塞,直到更多的熵到达。这会导致您所看到的症状,即 jarsigner 进程坐在那里不占用 CPU 时间但也没有做太多事情。

在某些时候(从 1.5 到 1.6 AFAIK),Java 从使用 /dev/urandom/dev/random。实际熵实际上是现代计算机上的稀缺资源——大量 RAM 会减少磁盘 Activity ,缓存内容的智能程序会减少网络 Activity 。有人告诉我,在虚拟机(就像许多构建服务器所在的虚拟机)上,熵收集率可能更低。

你可以

  • 将 Java 重新配置为使用 /dev/urandom(如果您不是偏执狂)
  • 部署一种向 /dev/random 中注入(inject)额外熵的方法>

我选择了选项 B:我为我选择的发行版 (Ubuntu) 安装了 randomsound 包。这会对您的麦克风进行白噪声采样,并在它干涸时使用它向 /dev/random 注入(inject)熵。这样做的主要缺点是它会阻止麦克风用于其他用途。还有其他获得额外熵的方法,例如将磁盘复制到 /dev/null,或进行包更新(大量磁盘和网络流量)。您可能希望为您的一台或多台服务器配备硬件 RNG,并安装可以为其他服务器提供熵即服务的东西。或者甚至 USB 声卡和 randomsound 都可以工作(服务器机房中有很多白噪声......)

对于选项A,你可以设置属性

-Djava.security.egd=file:/dev/./urandom

(注意额外的点 - 这是为了解决一段“智能”代码,假设您想要 /dev/random 即使您没有这么说:请参阅:https://bugs.openjdk.java.net/browse/JDK-6202721)

关于java - Ant signjar 任务时间戳太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com