0

我正在开发一种工具来执行类似于 p2 DirectorApplication 的 p2 安装。当工件存储库的 URI 使用 http 协议指向站点位置时,我遇到了问题。工件的下载在某些时候停止运行,并且操作状态设置为严重性 IStatus.CANCEL。(使用文件协议不会发生此错误。)

我无法通过调试验证这一点,因为在此模式下不会发生“中止”。我在 SimpleArtifactRepository.getArtifacts 中找到了一段代码,其中启动了多个作业以下载请求的工件。如果我手动将 numberOfJobs 设置为 1,则“中止”也不会发生。

我不确定这可能是什么原因。我会对将最大线程数设置为 1 的可能性感到满意。有一个属性由 SimpleArtifactRepository.getMaximumThreads 对此用例进行评估:PROP_MAX_THREADS (eclipse.p2.max.threads)。

我找不到设置此属性的正确位置。非常欢迎任何提示!

4

1 回答 1

1

设置此属性的唯一官方方法是将其存储在存储库中。因此,如果您拥有正在使用的所有工件存储库,则可以在此处进行更改。

否则(和更可能的情况),只有黑客来设置它。有一个用于在工件存储库上设置属性的 API,但该 API 不能用于通过 HTTP 访问的存储库。通过 API 进行的更改不仅会影响内存中的表示,而且 p2 坚持也要更改持久存储库。这不能在远程存储库上完成,因此会阻止通过 API 进行的所有属性更改。

因此,要仅更改内存中的属性,您需要使用反射来破解对象。你可以在这里看到一个例子。

于 2013-08-14T09:50:35.597 回答