2

現在、RCPアプリケーションで問題が発生しており、誰かが同じ問題に遭遇して、いくつかの貴重なヒントを教えてくれるかどうかを尋ねたいと思いました。

私のRCPアプリケーションを使用すると、プラグインはモデルの特定の抽象クラス(シングルトン)の実装を提供して、更新マネージャーを介して実行時にモデルを拡張できます。これらのクラスをインスタンス化する

    extensionPointImplementation.createExecutableExtension(..) 

Eclipseレジストリを解析した後。デフォルトのJavaシリアル化APIを使用して、作成されたインスタンスをシリアル化できます。

ここで問題があります。オブジェクトを逆シリアル化しようとしているプラ​​グインは、プラグイン間にプラグインの依存関係がないため、モデル拡張のクラス実装を見つけることができません。それにもかかわらず、実行時にモデルを拡張するという考えを時代遅れにするような依存関係を作成することはできません。

デフォルトのJavaシリアル化APIを使用してこの問題を解決することは可能ですか、それとも独自のシリアル化を実装する必要がありますか(Eclipseレジストリを解析し、必要なプラグインがすべて利用可能な場合は上記の行を介してインスタンスを作成します。それ以外の場合は例外をスローします)これはデフォルトのJavaシリアル化APIに基づいている可能性があります(可能であれば、自分で完全にシリアル化を作成したくない)?

ありがとう。

4

1 に答える 1

1

いわゆるバディポリシーを定義する必要があります。クラスをインスタンス化しようとしているバンドルで追加

Eclipse-BuddyPolicy: registered

manifest.mf。クラスを提供するバンドルで追加

Eclipse-RegisterBuddy: <symbolic name of the bundle instantiating the class>

manifest.mf

于 2012-12-17T14:02:17.357 に答える