- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 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 。有人告诉我,在虚拟机(就像许多构建服务器所在的虚拟机)上,熵收集率可能更低。
你可以
/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/
我正在使用 Hudson 构建一个项目。我有几个 jar 文件,我想使用 Ant SignJar 任务使用时间戳进行签名。当没有时间戳时,它就像一个魅力 - 一个文件大约需要 2-3 秒。当我将“ts
我们在构建中签署了很多 jar 文件。目前,它占总构建时间的 60-80%,从 15 分钟变为 45+ 分钟。因此,我们非常有兴趣通过并行化来加快签名过程。 所有 jar 都在一个文件夹中,现在我们的
我本周更新了我的 MAC 并收到了新的 Java 版本。java版本“1.6.0_37” 现在 ANT 提示无法再签署 JAR signWebStartJars: [delete] Deleti
我是一名优秀的程序员,十分优秀!