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 に答える